[Maria-developers] Rev 2734: Maria WL#61 in file:///Users/bell/maria/bzr/work-maria-5.2-engine/
At file:///Users/bell/maria/bzr/work-maria-5.2-engine/ ------------------------------------------------------------ revno: 2734 revision-id: sanja@askmonty.org-20091204114937-cfkvax0g36d3nq3j parent: psergey@askmonty.org-20091202142609-18bp41q8mejxl47t committer: sanja@askmonty.org branch nick: work-maria-5.2-engine timestamp: Fri 2009-12-04 13:49:37 +0200 message: Maria WL#61 Interface for maria extensions. Additional information about plugins (maturity and string version) interface for maria extensions. === modified file 'CMakeLists.txt' --- a/CMakeLists.txt 2009-10-03 19:24:13 +0000 +++ b/CMakeLists.txt 2009-12-04 11:49:37 +0000 @@ -251,6 +251,7 @@ IF (ENGINE_BUILD_TYPE STREQUAL "STATIC") SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin") + SET (mariaext_plugin_defs "${mariaext_plugin_defs},bltnmext_${PLUGIN_NAME}_plugin") SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME}) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE") SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE) @@ -269,6 +270,7 @@ IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE") SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin") + SET (mariaext_plugin_defs "${mariaext_plugin_defs},bltnmext_partition_plugin") ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE) # Special handling for tmp tables with the maria engine === modified file 'config/ac-macros/plugins.m4' --- a/config/ac-macros/plugins.m4 2009-04-25 10:05:32 +0000 +++ b/config/ac-macros/plugins.m4 2009-12-04 11:49:37 +0000 @@ -461,6 +461,7 @@ ]) ]) mysql_plugin_defs="$mysql_plugin_defs, [builtin_]$2[_plugin]" + mariaext_plugin_defs="$mariaext_plugin_defs, [bltnmext_]$2[_plugin]" [with_plugin_]$2=yes AC_MSG_RESULT([yes]) m4_ifdef([$11],[ === modified file 'configure.in' --- a/configure.in 2009-11-12 04:31:28 +0000 +++ b/configure.in 2009-12-04 11:49:37 +0000 @@ -2842,6 +2842,7 @@ AC_SUBST(mysql_plugin_dirs) AC_SUBST(mysql_plugin_libs) AC_SUBST(mysql_plugin_defs) +AC_SUBST(mariaext_plugin_defs) # Now that sql_client_dirs and sql_server_dirs are stable, determine the union. === modified file 'include/mysql/plugin.h' --- a/include/mysql/plugin.h 2009-09-07 20:50:10 +0000 +++ b/include/mysql/plugin.h 2009-12-04 11:49:37 +0000 @@ -65,7 +65,10 @@ Plugin API. Common for all plugin types. */ +/* MySQL plugin interface version */ #define MYSQL_PLUGIN_INTERFACE_VERSION 0x0100 +/* MariaDB extentsion interface version */ +#define MARIAEXT_PLUGIN_INTERFACE_VERSION 0x0100 /* The allowable types of plugins @@ -86,6 +89,21 @@ #define PLUGIN_LICENSE_GPL_STRING "GPL" #define PLUGIN_LICENSE_BSD_STRING "BSD" +/* definitions of code maturity for plugins */ +#define PLUGIN_MATURITY_UNKNOWN 0 +#define PLUGIN_MATURITY_TEST 1 +#define PLUGIN_MATURITY_ALPHA 2 +#define PLUGIN_MATURITY_BETA 3 +#define PLUGIN_MATURITY_GAMMA 4 +#define PLUGIN_MATURITY_RELEASE 5 + +#define PLUGIN_MATURITY_UNKNOWN_STR "Unknown" +#define PLUGIN_MATURITY_TEST_STR "Test" +#define PLUGIN_MATURITY_ALPHA_STR "Alpha" +#define PLUGIN_MATURITY_BETA_STR "Beta" +#define PLUGIN_MATURITY_GAMMA_STR "Gamma" +#define PLUGIN_MATURITY_RELEASE_STR "Release" + /* Macros for beginning and ending plugin declarations. Between mysql_declare_plugin and mysql_declare_plugin_end there should @@ -94,15 +112,29 @@ #ifndef MYSQL_DYNAMIC_PLUGIN + #define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \ int VERSION= MYSQL_PLUGIN_INTERFACE_VERSION; \ int PSIZE= sizeof(struct st_mysql_plugin); \ struct st_mysql_plugin DECLS[]= { + +#define __MARIAEXT_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \ +int VERSION= MARIAEXT_PLUGIN_INTERFACE_VERSION; \ +int PSIZE= sizeof(struct st_mariaext_plugin); \ +struct st_mariaext_plugin DECLS[]= { + #else + #define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \ MYSQL_PLUGIN_EXPORT int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \ MYSQL_PLUGIN_EXPORT int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \ MYSQL_PLUGIN_EXPORT struct st_mysql_plugin _mysql_plugin_declarations_[]= { + +#define __MARIAEXT_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \ +MYSQL_PLUGIN_EXPORT int _mariaext_plugin_interface_version_= MARIAEXT_PLUGIN_INTERFACE_VERSION; \ +MYSQL_PLUGIN_EXPORT int _mariaext_sizeof_struct_st_plugin_= sizeof(struct st_mariaext_plugin); \ +MYSQL_PLUGIN_EXPORT struct st_mariaext_plugin _mariaext_plugin_declarations_[]= { + #endif #define mysql_declare_plugin(NAME) \ @@ -111,7 +143,14 @@ builtin_ ## NAME ## _sizeof_struct_st_plugin, \ builtin_ ## NAME ## _plugin) +#define mariaext_declare_plugin(NAME) \ +__MARIAEXT_DECLARE_PLUGIN(NAME, \ + bltnmext_ ## NAME ## _plugin_interface_version, \ + bltnmext_ ## NAME ## _sizeof_struct_st_plugin, \ + bltnmext_ ## NAME ## _plugin) + #define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0,0,0,0,0}} +#define mariaext_declare_plugin_end ,{0,0}} /* declarations for SHOW STATUS support in plugins @@ -407,6 +446,16 @@ void * __reserved1; /* reserved for dependency checking */ }; +/* + MariaDB extension for plugins declaration structure. +*/ + +struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */ + int maturity; /* HA_PLUGIN_MATURITY_XXX */ +}; + /************************************************************************* API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN) */ === modified file 'include/mysql/plugin.h.pp' --- a/include/mysql/plugin.h.pp 2008-10-10 15:28:41 +0000 +++ b/include/mysql/plugin.h.pp 2009-12-04 11:49:37 +0000 @@ -46,6 +46,11 @@ struct st_mysql_sys_var **system_vars; void * __reserved1; }; +struct st_mariaext_plugin +{ + const char *sversion; + int maturity; +}; enum enum_ftparser_mode { MYSQL_FTPARSER_SIMPLE_MODE= 0, === modified file 'plugin/daemon_example/daemon_example.cc' --- a/plugin/daemon_example/daemon_example.cc 2007-06-27 14:49:12 +0000 +++ b/plugin/daemon_example/daemon_example.cc 2009-12-04 11:49:37 +0000 @@ -200,3 +200,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(daemon_example) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_TEST /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'plugin/fulltext/plugin_example.c' --- a/plugin/fulltext/plugin_example.c 2007-04-26 19:26:04 +0000 +++ b/plugin/fulltext/plugin_example.c 2009-12-04 11:49:37 +0000 @@ -270,4 +270,10 @@ NULL } mysql_declare_plugin_end; +mariaext_declare_plugin(ftexample) +{ + "0.01", /* string version */ + PLUGIN_MATURITY_TEST /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'sql/ha_ndbcluster.cc' --- a/sql/ha_ndbcluster.cc 2009-09-07 20:50:10 +0000 +++ b/sql/ha_ndbcluster.cc 2009-12-04 11:49:37 +0000 @@ -10561,5 +10561,11 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(ndbcluster) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_BETA /* maturity */ +} +mariaext_declare_plugin_end; #endif === modified file 'sql/ha_partition.cc' --- a/sql/ha_partition.cc 2009-11-12 04:31:28 +0000 +++ b/sql/ha_partition.cc 2009-12-04 11:49:37 +0000 @@ -6510,5 +6510,11 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(partition) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; #endif === modified file 'sql/log.cc' --- a/sql/log.cc 2009-11-12 04:31:28 +0000 +++ b/sql/log.cc 2009-12-04 11:49:37 +0000 @@ -5795,3 +5795,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(binlog) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'sql/sql_builtin.cc.in' --- a/sql/sql_builtin.cc.in 2006-12-31 01:29:11 +0000 +++ b/sql/sql_builtin.cc.in 2009-12-04 11:49:37 +0000 @@ -16,6 +16,7 @@ #include <mysql/plugin.h> typedef struct st_mysql_plugin builtin_plugin[]; +typedef struct st_mariaext_plugin bltnmext_plugin[]; extern builtin_plugin builtin_binlog_plugin@mysql_plugin_defs@; @@ -25,3 +26,10 @@ builtin_binlog_plugin@mysql_plugin_defs@,(struct st_mysql_plugin *)0 }; +extern bltnmext_plugin + bltnmext_binlog_plugin@mariaext_plugin_defs@; + +struct st_mariaext_plugin *mysqld_bltnmexts[]= +{ + bltnmext_binlog_plugin@mariaext_plugin_defs@,(struct st_mariaext_plugin *)0 +}; === modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2009-11-12 04:31:28 +0000 +++ b/sql/sql_plugin.cc 2009-12-04 11:49:37 +0000 @@ -28,6 +28,9 @@ #endif extern struct st_mysql_plugin *mysqld_builtins[]; +extern struct st_mariaext_plugin *mysqld_bltnmexts[]; +static st_mariaext_plugin no_mariaext[2]= {{"Unknown", 0}, {0, 0}}; +static st_mariaext_plugin *empty_mariaext= no_mariaext; /** @note The order of the enumeration is critical. @@ -82,6 +85,14 @@ "_mysql_sizeof_struct_st_plugin_"; static const char *plugin_declarations_sym= "_mysql_plugin_declarations_"; static int min_plugin_interface_version= MYSQL_PLUGIN_INTERFACE_VERSION & ~0xFF; +static const char *mariaext_plugin_interface_version_sym= + "_mariaext_plugin_interface_version_"; +static const char *mariaext_sizeof_st_plugin_sym= + "_mariaext_sizeof_struct_st_plugin_"; +static const char *mariaext_plugin_declarations_sym= + "_mariaext_plugin_declarations_"; +static int min_mariaext_plugin_interface_version= + MARIAEXT_PLUGIN_INTERFACE_VERSION & ~0xFF; #endif /* Note that 'int version' must be the first field of every plugin @@ -352,6 +363,7 @@ char dlpath[FN_REFLEN]; uint plugin_dir_len, dummy_errors, dlpathlen; struct st_plugin_dl *tmp, plugin_dl; + struct st_mariaext_plugin *mariaext= no_mariaext; void *sym; DBUG_ENTER("plugin_dl_add"); plugin_dir_len= strlen(opt_plugin_dir); @@ -507,6 +519,15 @@ files_charset_info, dl->str, dl->length, system_charset_info, &dummy_errors); plugin_dl.dl.str[plugin_dl.dl.length]= 0; + + if ((sym= dlsym(plugin_dl.handle, mariaext_plugin_interface_version_sym)) && + (*(int *)sym == MARIAEXT_PLUGIN_INTERFACE_VERSION) && + (sym= dlsym(plugin_dl.handle, mariaext_plugin_declarations_sym))) + { + mariaext= (struct st_mariaext_plugin *) sym; + } + plugin_dl.mariaext= mariaext; + /* Add this dll to array */ if (! (tmp= plugin_dl_insert_or_reuse(&plugin_dl))) { @@ -719,6 +740,7 @@ { struct st_plugin_int tmp; struct st_mysql_plugin *plugin; + struct st_mariaext_plugin *ext, *mariaext; DBUG_ENTER("plugin_add"); if (plugin_find_internal(name, MYSQL_ANY_PLUGIN)) { @@ -732,9 +754,18 @@ bzero((char*) &tmp, sizeof(tmp)); if (! (tmp.plugin_dl= plugin_dl_add(dl, report))) DBUG_RETURN(TRUE); + /* Find plugin by name */ - for (plugin= tmp.plugin_dl->plugins; plugin->info; plugin++) + for (plugin= tmp.plugin_dl->plugins, ext= tmp.plugin_dl->mariaext; + plugin->info; + plugin++, ext++) { + mariaext= ext; + if (!ext->sversion) + { + mariaext= empty_mariaext; + ext--; + } uint name_len= strlen(plugin->name); if (plugin->type >= 0 && plugin->type < MYSQL_MAX_PLUGIN_TYPE_NUM && ! my_strnncoll(system_charset_info, @@ -759,6 +790,7 @@ goto err; } tmp.plugin= plugin; + tmp.mariaext= mariaext; tmp.name.str= (char *)plugin->name; tmp.name.length= name_len; tmp.ref_count= 0; @@ -1121,7 +1153,9 @@ uint i; bool is_myisam; struct st_mysql_plugin **builtins; + struct st_mariaext_plugin **bltnmexts; struct st_mysql_plugin *plugin; + struct st_mariaext_plugin *ext, *mariaext; struct st_plugin_int tmp, *plugin_ptr, **reap; MEM_ROOT tmp_root; bool reaped_mandatory_plugin= FALSE; @@ -1160,10 +1194,25 @@ /* First we register builtin plugins */ - for (builtins= mysqld_builtins; *builtins; builtins++) + for (builtins= mysqld_builtins, bltnmexts= mysqld_bltnmexts; + *builtins; + builtins++, bltnmexts++) { - for (plugin= *builtins; plugin->info; plugin++) + /* extensions should be the same numbers as static plugins) */ + DBUG_ASSERT(*bltnmexts); + for (plugin= *builtins, ext= *bltnmexts; + plugin->info; + plugin++, ext++) { + + /* in case if plugin describe less extensions then plugins */ + mariaext= ext; + if (!ext->sversion) + { + mariaext= empty_mariaext; + ext--; + } + if (opt_ignore_builtin_innodb && !my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name, 6, (const uchar*) "InnoDB", 6)) @@ -1186,6 +1235,7 @@ #endif bzero(&tmp, sizeof(tmp)); tmp.plugin= plugin; + tmp.mariaext= mariaext; tmp.name.str= (char *)plugin->name; tmp.name.length= strlen(plugin->name); tmp.state= 0; === modified file 'sql/sql_plugin.h' --- a/sql/sql_plugin.h 2009-05-14 12:03:33 +0000 +++ b/sql/sql_plugin.h 2009-12-04 11:49:37 +0000 @@ -63,6 +63,7 @@ LEX_STRING dl; void *handle; struct st_mysql_plugin *plugins; + struct st_mariaext_plugin *mariaext; int version; uint ref_count; /* number of plugins loaded from the library */ }; @@ -74,6 +75,7 @@ LEX_STRING name; struct st_mysql_plugin *plugin; struct st_plugin_dl *plugin_dl; + struct st_mariaext_plugin *mariaext; uint state; uint ref_count; /* number of threads using the plugin */ void *data; /* plugin type specific, e.g. handlerton */ @@ -95,6 +97,7 @@ #define plugin_name(pi) (&((pi)->name)) #define plugin_state(pi) ((pi)->state) #define plugin_equals(p1,p2) ((p1) == (p2)) +#define plugin_ext(pi) ((pi)->mariaext) #else typedef struct st_plugin_int **plugin_ref; #define plugin_decl(pi) ((pi)[0]->plugin) @@ -103,6 +106,8 @@ #define plugin_name(pi) (&((pi)[0]->name)) #define plugin_state(pi) ((pi)[0]->state) #define plugin_equals(p1,p2) ((p1) && (p2) && (p1)[0] == (p2)[0]) +#define plugin_ext(pi) ((pi)[0]->mariaext) + #endif typedef int (*plugin_type_init)(struct st_plugin_int *); === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2009-11-12 04:31:28 +0000 +++ b/sql/sql_show.cc 2009-12-04 11:49:37 +0000 @@ -100,6 +100,7 @@ TABLE *table= (TABLE*) arg; struct st_mysql_plugin *plug= plugin_decl(plugin); struct st_plugin_dl *plugin_dl= plugin_dlib(plugin); + struct st_mariaext_plugin *mariaext= plugin_ext(plugin); CHARSET_INFO *cs= system_charset_info; char version_buf[20]; @@ -186,6 +187,48 @@ } table->field[9]->set_notnull(); + + switch (mariaext->maturity) { + case PLUGIN_MATURITY_UNKNOWN: + table->field[10]->store(PLUGIN_MATURITY_UNKNOWN_STR, + sizeof(PLUGIN_MATURITY_UNKNOWN_STR) - 1, cs); + break; + case PLUGIN_MATURITY_TEST: + table->field[10]->store(PLUGIN_MATURITY_TEST_STR, + sizeof(PLUGIN_MATURITY_TEST_STR) - 1, cs); + break; + case PLUGIN_MATURITY_ALPHA: + table->field[10]->store(PLUGIN_MATURITY_ALPHA_STR, + sizeof(PLUGIN_MATURITY_ALPHA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_BETA: + table->field[10]->store(PLUGIN_MATURITY_BETA_STR, + sizeof(PLUGIN_MATURITY_BETA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_GAMMA: + table->field[10]->store(PLUGIN_MATURITY_GAMMA_STR, + sizeof(PLUGIN_MATURITY_GAMMA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_RELEASE: + table->field[10]->store(PLUGIN_MATURITY_RELEASE_STR, + sizeof(PLUGIN_MATURITY_RELEASE_STR) - 1, cs); + break; + default: + DBUG_ASSERT(0); + table->field[10]->store("Unknown", 7, cs); + break; + } + table->field[10]->set_notnull(); + + if (mariaext->sversion) + { + table->field[11]->store(mariaext->sversion, + strlen(mariaext->sversion), cs); + table->field[11]->set_notnull(); + } + else + table->field[11]->set_null(); + return schema_table_store_record(thd, table); } @@ -6990,6 +7033,8 @@ {"PLUGIN_AUTHOR", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, {"PLUGIN_DESCRIPTION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, {"PLUGIN_LICENSE", 80, MYSQL_TYPE_STRING, 0, 1, "License", SKIP_OPEN_TABLE}, + {"PLUGIN_MATURITY", 7, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, + {"PLUGIN_AUTH_VERSION", 80, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE} }; === modified file 'storage/archive/ha_archive.cc' --- a/storage/archive/ha_archive.cc 2009-09-07 20:50:10 +0000 +++ b/storage/archive/ha_archive.cc 2009-12-04 11:49:37 +0000 @@ -1642,4 +1642,10 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(archive) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/blackhole/ha_blackhole.cc' --- a/storage/blackhole/ha_blackhole.cc 2008-11-10 20:21:49 +0000 +++ b/storage/blackhole/ha_blackhole.cc 2009-12-04 11:49:37 +0000 @@ -369,3 +369,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(blackhole) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/csv/ha_tina.cc' --- a/storage/csv/ha_tina.cc 2009-04-25 10:05:32 +0000 +++ b/storage/csv/ha_tina.cc 2009-12-04 11:49:37 +0000 @@ -1636,4 +1636,9 @@ NULL /* config options */ } mysql_declare_plugin_end; - +mariaext_declare_plugin(csv) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/example/ha_example.cc' --- a/storage/example/ha_example.cc 2008-02-24 13:12:17 +0000 +++ b/storage/example/ha_example.cc 2009-12-04 11:49:37 +0000 @@ -906,3 +906,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(example) +{ + "0.1", /* string version */ + PLUGIN_MATURITY_TEST /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/federated/ha_federated.cc' --- a/storage/federated/ha_federated.cc 2009-09-07 20:50:10 +0000 +++ b/storage/federated/ha_federated.cc 2009-12-04 11:49:37 +0000 @@ -3379,3 +3379,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(federated) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_BETA /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/federatedx/ha_federatedx.cc' --- a/storage/federatedx/ha_federatedx.cc 2009-11-03 11:08:09 +0000 +++ b/storage/federatedx/ha_federatedx.cc 2009-12-04 11:49:37 +0000 @@ -3491,3 +3491,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(federated) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_UNKNOWN /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/heap/ha_heap.cc' --- a/storage/heap/ha_heap.cc 2009-09-07 20:50:10 +0000 +++ b/storage/heap/ha_heap.cc 2009-12-04 11:49:37 +0000 @@ -767,3 +767,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(heap) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/ibmdb2i/ha_ibmdb2i.cc' --- a/storage/ibmdb2i/ha_ibmdb2i.cc 2009-07-08 09:10:01 +0000 +++ b/storage/ibmdb2i/ha_ibmdb2i.cc 2009-12-04 11:49:37 +0000 @@ -3357,3 +3357,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(ibmdb2i) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_UNKNOWN /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/innobase/handler/ha_innodb.cc' --- a/storage/innobase/handler/ha_innodb.cc 2009-10-16 22:57:48 +0000 +++ b/storage/innobase/handler/ha_innodb.cc 2009-12-04 11:49:37 +0000 @@ -8684,6 +8684,12 @@ NULL /* reserved */ } mysql_declare_plugin_end; +mariaext_declare_plugin(innobase) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; /** @brief Initialize the default value of innodb_commit_concurrency. === modified file 'storage/innodb_plugin/handler/ha_innodb.cc' --- a/storage/innodb_plugin/handler/ha_innodb.cc 2009-08-04 08:02:48 +0000 +++ b/storage/innodb_plugin/handler/ha_innodb.cc 2009-12-04 11:49:37 +0000 @@ -10032,6 +10032,12 @@ i_s_innodb_cmpmem, i_s_innodb_cmpmem_reset mysql_declare_plugin_end; +mariaext_declare_plugin(innodb_plugin) +{ + INNODB_VERSION_STR, /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; /** @brief Initialize the default value of innodb_commit_concurrency. === modified file 'storage/maria/ha_maria.cc' --- a/storage/maria/ha_maria.cc 2009-10-26 11:35:42 +0000 +++ b/storage/maria/ha_maria.cc 2009-12-04 11:49:37 +0000 @@ -3352,3 +3352,9 @@ NULL } mysql_declare_plugin_end; +mariaext_declare_plugin(maria) +{ + "1.5", /* string version */ + PLUGIN_MATURITY_GAMMA /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/myisam/ha_myisam.cc' --- a/storage/myisam/ha_myisam.cc 2009-10-17 19:12:28 +0000 +++ b/storage/myisam/ha_myisam.cc 2009-12-04 11:49:37 +0000 @@ -2183,6 +2183,12 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(myisam) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; #ifdef HAVE_QUERY_CACHE === modified file 'storage/myisammrg/ha_myisammrg.cc' --- a/storage/myisammrg/ha_myisammrg.cc 2009-10-15 21:38:29 +0000 +++ b/storage/myisammrg/ha_myisammrg.cc 2009-12-04 11:49:37 +0000 @@ -1289,3 +1289,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(myisammrg) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +} +mariaext_declare_plugin_end; === modified file 'storage/pbxt/src/ha_pbxt.cc' --- a/storage/pbxt/src/ha_pbxt.cc 2009-09-03 06:15:03 +0000 +++ b/storage/pbxt/src/ha_pbxt.cc 2009-12-04 11:49:37 +0000 @@ -5507,6 +5507,18 @@ drizzle_declare_plugin_end; #else mysql_declare_plugin_end; +#ifdef MARIADB_BASE_VERSION +mariaext_declare_plugin(pbxt) +{ /* PBXT */ + "1.0", /* string version */ + PLUGIN_MATURITY_UNKNOWN /* maturity */ +}, +{ /* PBXT_STATISTICS */ + "1.0", /* string version */ + PLUGIN_MATURITY_UNKNOWN /* maturity */ +} +mariaext_declare_plugin_end; +#endif #endif #if defined(XT_WIN) && defined(XT_COREDUMP) === modified file 'storage/xtradb/handler/ha_innodb.cc' --- a/storage/xtradb/handler/ha_innodb.cc 2009-10-16 22:57:48 +0000 +++ b/storage/xtradb/handler/ha_innodb.cc 2009-12-04 11:49:37 +0000 @@ -10540,6 +10540,69 @@ i_s_innodb_index_stats, i_s_innodb_patches mysql_declare_plugin_end; +mariaext_declare_plugin(innobase) +{ /* InnoDB */ + INNODB_VERSION_STR, /* string version */ + PLUGIN_MATURITY_RELEASE /* maturity */ +}, +{ /* INNODB_RSEG */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_BUFFER_POOL_PAGES */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_BUFFER_POOL_PAGES_INDEX */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_BUFFER_POOL_PAGES_BLOB */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_TRX */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_LOCKS */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_LOCK_WAITS */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_CMP */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_CMP_RESET */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_CMPMEM */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_CMPMEM_RESET */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_TABLE_STATS */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* INNODB_INDEX_STATS */ + "1.0", + PLUGIN_MATURITY_RELEASE +}, +{ /* XTRADB_ENHANCEMENTS */ + INNODB_VERSION_STR, + PLUGIN_MATURITY_RELEASE +} +mariaext_declare_plugin_end; + /** @brief Initialize the default value of innodb_commit_concurrency.
4 дек. 2009, в 13:49, <sanja@askmonty.org> написал(а):
At file:///Users/bell/maria/bzr/work-maria-5.2-engine/
------------------------------------------------------------ revno: 2734 revision-id: sanja@askmonty.org-20091204114937-cfkvax0g36d3nq3j parent: psergey@askmonty.org-20091202142609-18bp41q8mejxl47t committer: sanja@askmonty.org branch nick: work-maria-5.2-engine timestamp: Fri 2009-12-04 13:49:37 +0200 message: Maria WL#61
Interface for maria extensions. Additional information about plugins (maturity and string version) interface for maria extensions.
For third part's plugins I added only proposals how new informations should looks like (it is up to owners to fix it). For plugins who wants to compile the same code under drizzle or mysql I put example in pbxt (#ifdefs). Results looks like this: select PLUGIN_NAME, PLUGIN_MATURITY, PLUGIN_AUTH_VERSION from plugins; PLUGIN_NAME PLUGIN_MATURITY PLUGIN_AUTH_VERSION binlog Release 1.0 MyISAM Release 1.0 partition Release 1.0 ARCHIVE Release 1.0 BLACKHOLE Release 1.0 CSV Release 1.0 FEDERATED Unknown 1.0 MEMORY Release 1.0 MARIA Gamma 1.5 MRG_MYISAM Release 1.0 PBXT Unknown 1.0 PBXT_STATISTICS Unknown 1.0 InnoDB Release 1.0.3-6a INNODB_RSEG Release 1.0 INNODB_BUFFER_POOL_PAGES Release 1.0 INNODB_BUFFER_POOL_PAGES_INDEX Release 1.0 INNODB_BUFFER_POOL_PAGES_BLOB Release 1.0 INNODB_TRX Release 1.0.3-6a INNODB_LOCKS Release 1.0.3-6a INNODB_LOCK_WAITS Release 1.0.3-6a INNODB_CMP Release 1.0.3-6a INNODB_CMP_RESET Release 1.0.3-6a INNODB_CMPMEM Release 1.0.3-6a INNODB_CMPMEM_RESET Release 1.0.3-6a INNODB_TABLE_STATS Release 1.0 INNODB_INDEX_STATS Release 1.0 XTRADB_ENHANCEMENTS Release 1.0.3-6a
Hi!
4 дек. 2009, в 13:49, <sanja@askmonty.org> написал(а):
At file:///Users/bell/maria/bzr/work-maria-5.2-engine/
------------------------------------------------------------ revno: 2734 revision-id: sanja@askmonty.org-20091204114937-cfkvax0g36d3nq3j parent: psergey@askmonty.org-20091202142609-18bp41q8mejxl47t committer: sanja@askmonty.org branch nick: work-maria-5.2-engine timestamp: Fri 2009-12-04 13:49:37 +0200 message: Maria WL#61
Interface for maria extensions. Additional information about plugins (maturity and string version) interface for maria extensions.
For third part's plugins I added only proposals how new informations should looks like (it is up to owners to fix it). For plugins who wants to compile the same code under drizzle or mysql I put example in pbxt (#ifdefs).
Results looks like this:
select PLUGIN_NAME, PLUGIN_MATURITY, PLUGIN_AUTH_VERSION from plugins; PLUGIN_NAME PLUGIN_MATURITY PLUGIN_AUTH_VERSION binlog Release 1.0 MyISAM Release 1.0 partition Release 1.0 ARCHIVE Release 1.0 BLACKHOLE Release 1.0 CSV Release 1.0 FEDERATED Unknown 1.0 MEMORY Release 1.0 MARIA Gamma 1.5 MRG_MYISAM Release 1.0
PBXT Unknown 1.0 PBXT_STATISTICS Unknown 1.0
PBXT should be at RC. The release number (found in storage/pbxt/Changelog) is now 1.0.9g RC3 <cut> Regards, Monty
Hi!
"sanja" == sanja <sanja@askmonty.org> writes:
sanja> At file:///Users/bell/maria/bzr/work-maria-5.2-engine/ sanja> ------------------------------------------------------------ sanja> revno: 2734 sanja> revision-id: sanja@askmonty.org-20091204114937-cfkvax0g36d3nq3j sanja> parent: psergey@askmonty.org-20091202142609-18bp41q8mejxl47t sanja> committer: sanja@askmonty.org sanja> branch nick: work-maria-5.2-engine sanja> timestamp: Fri 2009-12-04 13:49:37 +0200 sanja> message: sanja> Maria WL#61 <cut>
+++ b/CMakeLists.txt 2009-12-04 11:49:37 +0000 @@ -251,6 +251,7 @@
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC") SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin") + SET (mariaext_plugin_defs "${mariaext_plugin_defs},bltnmext_${PLUGIN_NAME}_plugin") SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME}) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE") SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE) @@ -269,6 +270,7 @@ IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE") SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin") + SET (mariaext_plugin_defs "${mariaext_plugin_defs},bltnmext_partition_plugin") ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
Probably stupid questions, but why mariaext instead of just mariadb? What does 'bltnmext_partition_plugin' stand for ? Can we use a more understandable name, like builtin_mariadb_partition_plugin ? <cut>
--- a/include/mysql/plugin.h 2009-09-07 20:50:10 +0000
<cut>
+/* + MariaDB extension for plugins declaration structure. +*/ + +struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */
sversion -> version ?
+ int maturity; /* HA_PLUGIN_MATURITY_XXX */ +}; + /************************************************************************* API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN) */
=== modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2009-11-12 04:31:28 +0000 +++ b/sql/sql_plugin.cc 2009-12-04 11:49:37 +0000
+ - for (plugin= tmp.plugin_dl->plugins; plugin->info; plugin++) + for (plugin= tmp.plugin_dl->plugins, ext= tmp.plugin_dl->mariaext; + plugin->info; + plugin++, ext++) { + mariaext= ext; + if (!ext->sversion) + { + mariaext= empty_mariaext; + ext--; + }
Please add a comment for the above if. For example: /* Plugin didn't have any mariadb extensions; Use default one and reset counter to do same for next internal plugin. */
+ /* extensions should be the same numbers as static plugins) */ + DBUG_ASSERT(*bltnmexts); + for (plugin= *builtins, ext= *bltnmexts; + plugin->info; + plugin++, ext++) { + + /* in case if plugin describe less extensions then plugins */ + mariaext= ext; + if (!ext->sversion) + { + mariaext= empty_mariaext; + ext--; + } +
I am a bit unsure about the above code; If we allow one to describe less extensions, then it's not sure that when one adds a new plugin with extension information, one remembers to also add all missing extensions. I think that for staticly compiled plugins we should require that they have also extension information. What do you think about this? <cut>
--- a/sql/sql_show.cc 2009-11-12 04:31:28 +0000
<cut>
+ switch (mariaext->maturity) { + case PLUGIN_MATURITY_UNKNOWN: + table->field[10]->store(PLUGIN_MATURITY_UNKNOWN_STR, + sizeof(PLUGIN_MATURITY_UNKNOWN_STR) - 1, cs); + break; + case PLUGIN_MATURITY_TEST: + table->field[10]->store(PLUGIN_MATURITY_TEST_STR, + sizeof(PLUGIN_MATURITY_TEST_STR) - 1, cs); + break; + case PLUGIN_MATURITY_ALPHA: + table->field[10]->store(PLUGIN_MATURITY_ALPHA_STR, + sizeof(PLUGIN_MATURITY_ALPHA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_BETA: + table->field[10]->store(PLUGIN_MATURITY_BETA_STR, + sizeof(PLUGIN_MATURITY_BETA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_GAMMA: + table->field[10]->store(PLUGIN_MATURITY_GAMMA_STR, + sizeof(PLUGIN_MATURITY_GAMMA_STR) - 1, cs); + break; + case PLUGIN_MATURITY_RELEASE: + table->field[10]->store(PLUGIN_MATURITY_RELEASE_STR, + sizeof(PLUGIN_MATURITY_RELEASE_STR) - 1, cs); + break;
If we would store the maturity as an array of LEX_STRINGS, we could do the above as: if ((uint) mariaext->maturity <= PLUGIN_MATURITY_RELEASE) table->field[10]->store(maturity_array[mariaext->maturity].str, maturity_array[mariaext->maturity].length, cs); else { DBUG_ASSERT(0); table->field[10]->store("Unknown", 7, cs); } <cut>
=== modified file 'storage/federatedx/ha_federatedx.cc' --- a/storage/federatedx/ha_federatedx.cc 2009-11-03 11:08:09 +0000 +++ b/storage/federatedx/ha_federatedx.cc 2009-12-04 11:49:37 +0000 @@ -3491,3 +3491,9 @@ NULL /* config options */ } mysql_declare_plugin_end; +mariaext_declare_plugin(federated) +{ + "1.0", /* string version */ + PLUGIN_MATURITY_UNKNOWN /* maturity */ +}
->
+ "2.0", /* string version */ + PLUGIN_MATURITY_BETA /* maturity */
=== modified file 'storage/pbxt/src/ha_pbxt.cc' --- a/storage/pbxt/src/ha_pbxt.cc 2009-09-03 06:15:03 +0000 +++ b/storage/pbxt/src/ha_pbxt.cc 2009-12-04 11:49:37 +0000 @@ -5507,6 +5507,18 @@ drizzle_declare_plugin_end; #else mysql_declare_plugin_end; +#ifdef MARIADB_BASE_VERSION +mariaext_declare_plugin(pbxt) +{ /* PBXT */ + "1.0", /* string version */
1.0.09g RC3
+ PLUGIN_MATURITY_UNKNOWN /* maturity */
PLUGIN_MATURITY_GAMMA
+}, +{ /* PBXT_STATISTICS */ + "1.0", /* string version */
1.0.09g RC3
+ PLUGIN_MATURITY_UNKNOWN /* maturity */
PLUGIN_MATURITY_GAMMA
+}
Regards, Monty
Hi! 22 янв. 2010, в 15:31, Michael Widenius написал(а):
Hi!
"sanja" == sanja <sanja@askmonty.org> writes:
sanja> At file:///Users/bell/maria/bzr/work-maria-5.2-engine/ sanja> ------------------------------------------------------------ sanja> revno: 2734 sanja> revision-id: sanja@askmonty.org-20091204114937-cfkvax0g36d3nq3j sanja> parent: psergey@askmonty.org-20091202142609-18bp41q8mejxl47t sanja> committer: sanja@askmonty.org sanja> branch nick: work-maria-5.2-engine sanja> timestamp: Fri 2009-12-04 13:49:37 +0200 sanja> message: sanja> Maria WL#61
<cut>
+++ b/CMakeLists.txt 2009-12-04 11:49:37 +0000 @@ -251,6 +251,7 @@
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC") SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_$ {PLUGIN_NAME}_plugin") + SET (mariaext_plugin_defs "$ {mariaext_plugin_defs},bltnmext_${PLUGIN_NAME}_plugin") SET (MYSQLD_STATIC_ENGINE_LIBS $ {MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME}) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_$ {ENGINE}_STORAGE_ENGINE") SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE) @@ -269,6 +270,7 @@ IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE) SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} - DWITH_PARTITION_STORAGE_ENGINE") SET (mysql_plugin_defs "$ {mysql_plugin_defs},builtin_partition_plugin") + SET (mariaext_plugin_defs "$ {mariaext_plugin_defs},bltnmext_partition_plugin") ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
Probably stupid questions, but why mariaext instead of just mariadb?
MARIAdbEXTension
What does 'bltnmext_partition_plugin' stand for ? Can we use a more understandable name, like builtin_mariadb_partition_plugin ?
yes
<cut>
--- a/include/mysql/plugin.h 2009-09-07 20:50:10 +0000
<cut>
+/* + MariaDB extension for plugins declaration structure. +*/ + +struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */
sversion -> version ?
actually it was string version (we have already numeric one).
+ int maturity; /* HA_PLUGIN_MATURITY_XXX */ +}; + / ************************************************************************* API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN) */
=== modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2009-11-12 04:31:28 +0000 +++ b/sql/sql_plugin.cc 2009-12-04 11:49:37 +0000 [skip] + /* extensions should be the same numbers as static plugins) */ + DBUG_ASSERT(*bltnmexts); + for (plugin= *builtins, ext= *bltnmexts; + plugin->info; + plugin++, ext++) { + + /* in case if plugin describe less extensions then plugins */ + mariaext= ext; + if (!ext->sversion) + { + mariaext= empty_mariaext; + ext--; + } +
I am a bit unsure about the above code; If we allow one to describe less extensions, then it's not sure that when one adds a new plugin with extension information, one remembers to also add all missing extensions.
I think that for staticly compiled plugins we should require that they have also extension information. What do you think about this?
It is for dynamically linked plugins. Of course statically linked will have everything but they will be included in built in plugins array (it is other code). [skip]
Hi!
"Oleksandr" == Oleksandr Byelkin <sanja@askmonty.org> writes:
Oleksandr> Hi! Oleksandr> 22 янв. 2010, в 15:31, Michael Widenius написал(а):
{mysql_plugin_defs},builtin_partition_plugin") + SET (mariaext_plugin_defs "$ {mariaext_plugin_defs},bltnmext_partition_plugin") ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
Probably stupid questions, but why mariaext instead of just mariadb?
Oleksandr> MARIAdbEXTension why not simply mariadb_plugin_defs to mimic the mysql one. or if you really want to have 'ext' then use: mariadb_extra_plugin_defs <cut>
+struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */
sversion -> version ?
Oleksandr> actually it was string version (we have already numeric one). Then use 'version_info' <cut>
I think that for staticly compiled plugins we should require that they have also extension information. What do you think about this?
Oleksandr> It is for dynamically linked plugins. Of course statically linked will Oleksandr> have everything but they will be included in built in plugins array Oleksandr> (it is other code). then ok. Regards, Monty
Hi! 26 янв. 2010, в 10:54, Michael Widenius написал(а):
+struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */
sversion -> version ?
Oleksandr> actually it was string version (we have already numeric one).
Then use 'version_info'
<cut>
I think that for staticly compiled plugins we should require that they have also extension information. What do you think about this?
Oleksandr> It is for dynamically linked plugins. Of course statically linked will Oleksandr> have everything but they will be included in built in plugins array Oleksandr> (it is other code).
then ok.
Actually I mistaken. Here is case of lack plugins descriptions in case of describing several plugins in one file (one array). I can put DBUG_ASSERT instead of above code (the code is working it was checked). At least one plugin (first) should have extension otherwise it will be compiler error.
Hi!
"Oleksandr" == Oleksandr Byelkin <sanja@askmonty.org> writes:
Oleksandr> Hi! Oleksandr> 26 янв. 2010, в 10:54, Michael Widenius написал(а):
+struct st_mariaext_plugin +{ + const char *sversion; /* plugin version string */
sversion -> version ?
Oleksandr> actually it was string version (we have already numeric
one).
Then use 'version_info'
<cut>
I think that for staticly compiled plugins we should require that they have also extension information. What do you think about this?
Oleksandr> It is for dynamically linked plugins. Of course
statically linked will Oleksandr> have everything but they will be included in built in plugins array Oleksandr> (it is other code).
then ok.
Oleksandr> Actually I mistaken. Here is case of lack plugins descriptions in case Oleksandr> of describing several plugins in one file (one array). I can put Oleksandr> DBUG_ASSERT instead of above code (the code is working it was Oleksandr> checked). At least one plugin (first) should have extension otherwise Oleksandr> it will be compiler error. Please add the DBUG_ASSERT. Regards, Monty
participants (3)
-
Michael Widenius
-
Oleksandr Byelkin
-
sanja@askmonty.org