MySQL Internals手册/写一个程序/所需的服务器代码修补程序

18.4所需的服务器代码修补程序

目前,程序只能在STATY中编译到服务器中。没有动态过程,可以动态加载它们,但我们有用的UDFS和插件。

因此,您必须执行以下步骤以使用服务器注册步骤:

  • 注册.cc.。H文件在mysqld_sources.列表sql / makefile.am.例如,在线之后sql_analyse。*文件正在开启:

diff -run 5.0 / sql / makefile.am 5.0-myproc / sql / makefile.am --- 5.0 / sql / makefile.am 2007-08-09 12:11:16.000000000 +0200 +++ 5.0-myProc / SQL /makefile.am 2007-08-09 00:22:19.000000000 +0200 @@ -94,6 +94,7,77 @@ sql_db.cc sql_table.cc sql_rename.cc sql_crypt.cc \ sql_load.cc mf_iocache.cc field_conv.cc.cc.cc sql_show.cc.\ sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \ + procedure_rownum.cc procedure_rownum.h \ slave.cc sql_repl.cc sql_union.cc sql_derived.cc \ client.c sql_client.cc mini_client_errors.c pack.c\ stacktrace.c repl_failsafe.h repl_failsafe.cc \
  • 注册.cc.源文件sqlsources.列表libmysqld / makefile.am.

diff -run 5.0 / libmysqld / makefile.am 5.0-myproc / libmysqld / makefile.am --- 5.0 / libmysqld / makefile.am 2007-08-09 12:18:16.000000000 +0200 +++ 5.0-myproc / libmysqld /makefile.am 2007-08-09 00:21:55.000000000 +0200 @@ -54,6 + 54,7,7 @@ Opt_sum.cc程序.cc记录.cc sql_acl.cc \ sql_load.cc discover.cc sql_locale.cc \sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \ + process_rownum.cc \ sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \ sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_map.cc sql_map.cc sql_parse.cc \sql_prepare.cc sql_derived.cc sql_rename.cc \
  • 包括你的。H文件in.sql / process.cc.

Diff -Run 5.0 / SQL / pcountach.cc 5.0-myproc / sql / pcountach.cc --- 5.0 / sql / pcountach.cc 2007-08-09 12:11:16.000000000 +0200 ++ + 5.0-myproc / sql /程序.CC 2007-08-09 00:21:04.000000000 +0200 @@ -23,6 +23,7 @@ #include“mysql_priv.h”#include“provide.h”#include“sql_Analyse.h”//包括过程+#包含“process_rownum.h”//包括过程#ifdef use_proc_range #include“proc_range.h”#endif
  • 注册您的程序INIT回调sql_procs.阵列in.sql / process.cc.

Diff -Run 5.0 / SQL / pcountach.cc 5.0-myproc / sql / pcountach.cc --- 5.0 / sql / pcountach.cc 2007-08-09 12:11:16.000000000 +0200 ++ + 5.0-myproc / sql /程序.CC 2007-08-09 00:21:04.000000000 +0200 @@ -37,6 +38,7 @@ {“split_count”,proc_count_range_init},// tcx {“matris_ranges”,proc_matris_range_init},/// tcx #endif + {“rownum”,proc_rownum_init},//将rownum列添加到结果{“Analyze”,proc_Analyse_Init} //分析结果};
  • 跑步自动autoconf.重新生成makefile.in.

文件和配置脚本
  • 跑步配置或运行刷新以前的配置config.status.

  • 跑步制作

  • 如果您的构建失败不知道如何制作xxx.o所需的xxx.cc在里面libmysqld /您可能需要创建一个符号链接的目录libmysqld / xxx.cc.SQL / XXX.CC.你自己。构建系统对创建这些符号用于在第一个编译后添加的文件的界限不太聪明......