Hi Sergey,
Patch is approved, but I think the comments are very terse and it would
help others if the comments were a little more elaborate.
Just my few cents,
Mats Kindahl
On 08/20/2010 01:37 PM, Sergey Vojtovich wrote:
> #At file:///home/svoj/mysql/server/mysql-5.5-bugfixing-bug52821/ based on
> revid:alik@stripped
>
> 3186 Sergey Vojtovich 2010-08-20
> BUG#52821 - plugin_ftparser.h and plugin_audit.h are
> not tested by ABI check
>
> plugin_audit.h and plugin_ftparser.h are now subject
> for ABI check. plugin.h is now tested implicitly.
>
> Also fixed broken ABI check cmake rules.
> @ Makefile.am
> plugin_audit.h and plugin_ftparser.h are now subject
> for ABI check. plugin.h is now tested implicitly.
> @ cmake/abi_check.cmake
> plugin_audit.h and plugin_ftparser.h are now subject
> for ABI check. plugin.h is now tested implicitly.
>
> Also fixed broken ABI check rules.
>
How is the rule fixed? What was wrong?
> @ cmake/do_abi_check.cmake
> Inform sources that we do ABI check.
> @ include/mysql/plugin.h.pp
> plugin.h is now tested implicitly.
> @ include/mysql/plugin_audit.h.pp
> plugin_audit.h is now subject for ABI check.
> @ include/mysql/plugin_ftparser.h.pp
> plugin_ftparser.h is now subject for ABI check.
>
> removed:
> include/mysql/plugin.h.pp
> added:
> include/mysql/plugin_audit.h.pp
> include/mysql/plugin_ftparser.h.pp
> modified:
> Makefile.am
> cmake/abi_check.cmake
> cmake/do_abi_check.cmake
> === modified file 'Makefile.am'
> --- a/Makefile.am 2010-07-29 12:32:11 +0000
> +++ b/Makefile.am 2010-08-20 11:37:38 +0000
> @@ -264,7 +264,8 @@ test-full-qa:
> # Headers which need to be checked for abi/api compatibility.
> #
>
> -API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \
> +API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin_audit.h \
> + $(top_srcdir)/include/mysql/plugin_ftparser.h \
>
Even though plugin.h is checked implicitly *now* it does not mean that
it will be that way forever. I suggest that you either keep plugin.h in
the list (which mean that any changes to plugin.h requires updating
three files) or add a comment to the Makefile.am that plugin.h is
checked implicitly so that anybody making changes there sees that it
might be necessary to add plugin.h to the list.
> $(top_srcdir)/include/mysql.h \
> $(top_srcdir)/include/mysql/psi/psi_abi_v1.h \
> $(top_srcdir)/include/mysql/psi/psi_abi_v2.h
>
> === modified file 'cmake/abi_check.cmake'
> --- a/cmake/abi_check.cmake 2010-07-20 19:53:39 +0000
> +++ b/cmake/abi_check.cmake 2010-08-20 11:37:38 +0000
> @@ -27,7 +27,8 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYS
> SET(COMPILER ${CMAKE_C_COMPILER})
> ENDIF()
> SET(API_PREPROCESSOR_HEADER
> - ${CMAKE_SOURCE_DIR}/include/mysql/plugin.h
> + ${CMAKE_SOURCE_DIR}/include/mysql/plugin_audit.h
> + ${CMAKE_SOURCE_DIR}/include/mysql/plugin_ftparser.h
>
Same here.
> ${CMAKE_SOURCE_DIR}/include/mysql.h
> ${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h
> ${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h
> @@ -38,18 +39,18 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYS
> -DCOMPILER=${COMPILER}
> -DSOURCE_DIR=${CMAKE_SOURCE_DIR}
> -DBINARY_DIR=${CMAKE_BINARY_DIR}
> - "-DDMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
> + "-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
>
What does this fix? Removing the extra D?
> -P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
> VERBATIM
> )
>
> ADD_CUSTOM_TARGET(abi_check_all
> COMMAND ${CMAKE_COMMAND}
> - -DCMAKE_C_COMPILER=${COMPILER}
> - -DCMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
> - -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
> - "-DMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
> - -P ${CMAKE_SOURCE_DIR}/cmake/scripts/do_abi_check.cmake
> + -DCOMPILER=${COMPILER}
> + -DSOURCE_DIR=${CMAKE_SOURCE_DIR}
> + -DBINARY_DIR=${CMAKE_BINARY_DIR}
> + "-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
> + -P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
> VERBATIM
> )
> ENDIF()
>
> === modified file 'cmake/do_abi_check.cmake'
> --- a/cmake/do_abi_check.cmake 2009-11-09 11:32:48 +0000
> +++ b/cmake/do_abi_check.cmake 2010-08-20 11:37:38 +0000
> @@ -56,8 +56,9 @@ FOREACH(file ${ABI_HEADERS})
> SET(tmpfile ${file}.pp.tmp)
> EXECUTE_PROCESS(
> COMMAND ${COMPILER}
> - -E -nostdinc -dI -I${SOURCE_DIR}/include -I${BINARY_DIR}/include
> - -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql ${file}
> + -E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
> + -I${BINARY_DIR}/include -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql
> + ${file}
>
> ERROR_QUIET OUTPUT_FILE ${tmpfile})
> EXECUTE_PROCESS(
> COMMAND sed -e
>
> === removed file 'include/mysql/plugin.h.pp'
> --- a/include/mysql/plugin.h.pp 2010-08-18 07:14:06 +0000
> +++ b/include/mysql/plugin.h.pp 1970-01-01 00:00:00 +0000
> @@ -1,168 +0,0 @@
> -#include <mysql/services.h>
> -#include <mysql/service_my_snprintf.h>
> -extern struct my_snprintf_service_st {
> - size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
> - size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
> -} *my_snprintf_service;
> -size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
> -size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
> -#include <mysql/service_thd_alloc.h>
> -struct st_mysql_lex_string
> -{
> - char *str;
> - size_t length;
> -};
> -typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
> -extern struct thd_alloc_service_st {
> - void *(*thd_alloc_func)(void*, unsigned int);
> - void *(*thd_calloc_func)(void*, unsigned int);
> - char *(*thd_strdup_func)(void*, const char *);
> - char *(*thd_strmake_func)(void*, const char *, unsigned int);
> - void *(*thd_memdup_func)(void*, const void*, unsigned int);
> - MYSQL_LEX_STRING *(*thd_make_lex_string_func)(void*, MYSQL_LEX_STRING *,
> - const char *, unsigned int, int);
> -} *thd_alloc_service;
> -void *thd_alloc(void* thd, unsigned int size);
> -void *thd_calloc(void* thd, unsigned int size);
> -char *thd_strdup(void* thd, const char *str);
> -char *thd_strmake(void* thd, const char *str, unsigned int size);
> -void *thd_memdup(void* thd, const void* str, unsigned int size);
> -MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
> - const char *str, unsigned int size,
> - int allocate_lex_string);
> -struct st_mysql_xid {
> - long formatID;
> - long gtrid_length;
> - long bqual_length;
> - char data[128];
> -};
> -typedef struct st_mysql_xid MYSQL_XID;
> -enum enum_mysql_show_type
> -{
> - SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
> - SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
> - SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE,
> - SHOW_always_last
> -};
> -struct st_mysql_show_var {
> - const char *name;
> - char *value;
> - enum enum_mysql_show_type type;
> -};
> -typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, char *);
> -struct st_mysql_sys_var;
> -struct st_mysql_value;
> -typedef int (*mysql_var_check_func)(void* thd,
> - struct st_mysql_sys_var *var,
> - void *save, struct st_mysql_value *value);
> -typedef void (*mysql_var_update_func)(void* thd,
> - struct st_mysql_sys_var *var,
> - void *var_ptr, const void *save);
> -struct st_mysql_plugin
> -{
> - int type;
> - void *info;
> - const char *name;
> - const char *author;
> - const char *descr;
> - int license;
> - int (*init)(void *);
> - int (*deinit)(void *);
> - unsigned int version;
> - struct st_mysql_show_var *status_vars;
> - struct st_mysql_sys_var **system_vars;
> - void * __reserved1;
> -};
> -#include "plugin_ftparser.h"
> -#include "plugin.h"
> -enum enum_ftparser_mode
> -{
> - MYSQL_FTPARSER_SIMPLE_MODE= 0,
> - MYSQL_FTPARSER_WITH_STOPWORDS= 1,
> - MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2
> -};
> -enum enum_ft_token_type
> -{
> - FT_TOKEN_EOF= 0,
> - FT_TOKEN_WORD= 1,
> - FT_TOKEN_LEFT_PAREN= 2,
> - FT_TOKEN_RIGHT_PAREN= 3,
> - FT_TOKEN_STOPWORD= 4
> -};
> -typedef struct st_mysql_ftparser_boolean_info
> -{
> - enum enum_ft_token_type type;
> - int yesno;
> - int weight_adjust;
> - char wasign;
> - char trunc;
> - char prev;
> - char *quot;
> -} MYSQL_FTPARSER_BOOLEAN_INFO;
> -typedef struct st_mysql_ftparser_param
> -{
> - int (*mysql_parse)(struct st_mysql_ftparser_param *,
> - char *doc, int doc_len);
> - int (*mysql_add_word)(struct st_mysql_ftparser_param *,
> - char *word, int word_len,
> - MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info);
> - void *ftparser_state;
> - void *mysql_ftparam;
> - struct charset_info_st *cs;
> - char *doc;
> - int length;
> - int flags;
> - enum enum_ftparser_mode mode;
> -} MYSQL_FTPARSER_PARAM;
> -struct st_mysql_ftparser
> -{
> - int interface_version;
> - int (*parse)(MYSQL_FTPARSER_PARAM *param);
> - int (*init)(MYSQL_FTPARSER_PARAM *param);
> - int (*deinit)(MYSQL_FTPARSER_PARAM *param);
> -};
> -struct st_mysql_daemon
> -{
> - int interface_version;
> -};
> -struct st_mysql_information_schema
> -{
> - int interface_version;
> -};
> -struct st_mysql_storage_engine
> -{
> - int interface_version;
> -};
> -struct handlerton;
> - struct Mysql_replication {
> - int interface_version;
> - };
> -struct st_mysql_value
> -{
> - int (*value_type)(struct st_mysql_value *);
> - const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
> - int (*val_real)(struct st_mysql_value *, double *realbuf);
> - int (*val_int)(struct st_mysql_value *, long long *intbuf);
> - int (*is_unsigned)(struct st_mysql_value *);
> -};
> -int thd_in_lock_tables(const void* thd);
> -int thd_tablespace_op(const void* thd);
> -long long thd_test_options(const void* thd, long long test_options);
> -int thd_sql_command(const void* thd);
> -const char *thd_proc_info(void* thd, const char *info);
> -void **thd_ha_data(const void* thd, const struct handlerton *hton);
> -void thd_storage_lock_wait(void* thd, long long value);
> -int thd_tx_isolation(const void* thd);
> -char *thd_security_context(void* thd, char *buffer, unsigned int length,
> - unsigned int max_query_len);
> -void thd_inc_row_count(void* thd);
> -int mysql_tmpfile(const char *prefix);
> -int thd_killed(const void* thd);
> -unsigned long thd_get_thread_id(const void* thd);
> -void thd_get_xid(const void* thd, MYSQL_XID *xid);
> -void mysql_query_cache_invalidate4(void* thd,
> - const char *key, unsigned int key_length,
> - int using_trx);
> -void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
> -void thd_set_ha_data(void* thd, const struct handlerton *hton,
> - const void *ha_data);
>
> === added file 'include/mysql/plugin_audit.h.pp'
> --- a/include/mysql/plugin_audit.h.pp 1970-01-01 00:00:00 +0000
> +++ b/include/mysql/plugin_audit.h.pp 2010-08-20 11:37:38 +0000
> @@ -0,0 +1,196 @@
> +#include "plugin.h"
> +#include <mysql/services.h>
> +#include <mysql/service_my_snprintf.h>
> +extern struct my_snprintf_service_st {
> + size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
> + size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
> +} *my_snprintf_service;
> +size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
> +size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
> +#include <mysql/service_thd_alloc.h>
> +struct st_mysql_lex_string
> +{
> + char *str;
> + size_t length;
> +};
> +typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
> +extern struct thd_alloc_service_st {
> + void *(*thd_alloc_func)(void*, unsigned int);
> + void *(*thd_calloc_func)(void*, unsigned int);
> + char *(*thd_strdup_func)(void*, const char *);
> + char *(*thd_strmake_func)(void*, const char *, unsigned int);
> + void *(*thd_memdup_func)(void*, const void*, unsigned int);
> + MYSQL_LEX_STRING *(*thd_make_lex_string_func)(void*, MYSQL_LEX_STRING *,
> + const char *, unsigned int, int);
> +} *thd_alloc_service;
> +void *thd_alloc(void* thd, unsigned int size);
> +void *thd_calloc(void* thd, unsigned int size);
> +char *thd_strdup(void* thd, const char *str);
> +char *thd_strmake(void* thd, const char *str, unsigned int size);
> +void *thd_memdup(void* thd, const void* str, unsigned int size);
> +MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
> + const char *str, unsigned int size,
> + int allocate_lex_string);
> +struct st_mysql_xid {
> + long formatID;
> + long gtrid_length;
> + long bqual_length;
> + char data[128];
> +};
> +typedef struct st_mysql_xid MYSQL_XID;
> +enum enum_mysql_show_type
> +{
> + SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
> + SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
> + SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE,
> + SHOW_always_last
> +};
> +struct st_mysql_show_var {
> + const char *name;
> + char *value;
> + enum enum_mysql_show_type type;
> +};
> +typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, char *);
> +struct st_mysql_sys_var;
> +struct st_mysql_value;
> +typedef int (*mysql_var_check_func)(void* thd,
> + struct st_mysql_sys_var *var,
> + void *save, struct st_mysql_value *value);
> +typedef void (*mysql_var_update_func)(void* thd,
> + struct st_mysql_sys_var *var,
> + void *var_ptr, const void *save);
> +struct st_mysql_plugin
> +{
> + int type;
> + void *info;
> + const char *name;
> + const char *author;
> + const char *descr;
> + int license;
> + int (*init)(void *);
> + int (*deinit)(void *);
> + unsigned int version;
> + struct st_mysql_show_var *status_vars;
> + struct st_mysql_sys_var **system_vars;
> + void * __reserved1;
> +};
> +#include "plugin_ftparser.h"
> +#include "plugin.h"
> +enum enum_ftparser_mode
> +{
> + MYSQL_FTPARSER_SIMPLE_MODE= 0,
> + MYSQL_FTPARSER_WITH_STOPWORDS= 1,
> + MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2
> +};
> +enum enum_ft_token_type
> +{
> + FT_TOKEN_EOF= 0,
> + FT_TOKEN_WORD= 1,
> + FT_TOKEN_LEFT_PAREN= 2,
> + FT_TOKEN_RIGHT_PAREN= 3,
> + FT_TOKEN_STOPWORD= 4
> +};
> +typedef struct st_mysql_ftparser_boolean_info
> +{
> + enum enum_ft_token_type type;
> + int yesno;
> + int weight_adjust;
> + char wasign;
> + char trunc;
> + char prev;
> + char *quot;
> +} MYSQL_FTPARSER_BOOLEAN_INFO;
> +typedef struct st_mysql_ftparser_param
> +{
> + int (*mysql_parse)(struct st_mysql_ftparser_param *,
> + char *doc, int doc_len);
> + int (*mysql_add_word)(struct st_mysql_ftparser_param *,
> + char *word, int word_len,
> + MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info);
> + void *ftparser_state;
> + void *mysql_ftparam;
> + struct charset_info_st *cs;
> + char *doc;
> + int length;
> + int flags;
> + enum enum_ftparser_mode mode;
> +} MYSQL_FTPARSER_PARAM;
> +struct st_mysql_ftparser
> +{
> + int interface_version;
> + int (*parse)(MYSQL_FTPARSER_PARAM *param);
> + int (*init)(MYSQL_FTPARSER_PARAM *param);
> + int (*deinit)(MYSQL_FTPARSER_PARAM *param);
> +};
> +struct st_mysql_daemon
> +{
> + int interface_version;
> +};
> +struct st_mysql_information_schema
> +{
> + int interface_version;
> +};
> +struct st_mysql_storage_engine
> +{
> + int interface_version;
> +};
> +struct handlerton;
> + struct Mysql_replication {
> + int interface_version;
> + };
> +struct st_mysql_value
> +{
> + int (*value_type)(struct st_mysql_value *);
> + const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
> + int (*val_real)(struct st_mysql_value *, double *realbuf);
> + int (*val_int)(struct st_mysql_value *, long long *intbuf);
> + int (*is_unsigned)(struct st_mysql_value *);
> +};
> +int thd_in_lock_tables(const void* thd);
> +int thd_tablespace_op(const void* thd);
> +long long thd_test_options(const void* thd, long long test_options);
> +int thd_sql_command(const void* thd);
> +const char *thd_proc_info(void* thd, const char *info);
> +void **thd_ha_data(const void* thd, const struct handlerton *hton);
> +void thd_storage_lock_wait(void* thd, long long value);
> +int thd_tx_isolation(const void* thd);
> +char *thd_security_context(void* thd, char *buffer, unsigned int length,
> + unsigned int max_query_len);
> +void thd_inc_row_count(void* thd);
> +int mysql_tmpfile(const char *prefix);
> +int thd_killed(const void* thd);
> +unsigned long thd_get_thread_id(const void* thd);
> +void thd_get_xid(const void* thd, MYSQL_XID *xid);
> +void mysql_query_cache_invalidate4(void* thd,
> + const char *key, unsigned int key_length,
> + int using_trx);
> +void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
> +void thd_set_ha_data(void* thd, const struct handlerton *hton,
> + const void *ha_data);
> +struct mysql_event
> +{
> + unsigned int event_class;
> +};
> +struct mysql_event_general
> +{
> + unsigned int event_class;
> + unsigned int event_subclass;
> + int general_error_code;
> + unsigned long general_thread_id;
> + const char *general_user;
> + unsigned int general_user_length;
> + const char *general_command;
> + unsigned int general_command_length;
> + const char *general_query;
> + unsigned int general_query_length;
> + struct charset_info_st *general_charset;
> + unsigned long long general_time;
> + unsigned long long general_rows;
> +};
> +struct st_mysql_audit
> +{
> + int interface_version;
> + void (*release_thd)(void*);
> + void (*event_notify)(void*, const struct mysql_event *);
> + unsigned long class_mask[1];
> +};
>
> === added file 'include/mysql/plugin_ftparser.h.pp'
> --- a/include/mysql/plugin_ftparser.h.pp 1970-01-01 00:00:00 +0000
> +++ b/include/mysql/plugin_ftparser.h.pp 2010-08-20 11:37:38 +0000
> @@ -0,0 +1,168 @@
> +#include "plugin.h"
> +#include <mysql/services.h>
> +#include <mysql/service_my_snprintf.h>
> +extern struct my_snprintf_service_st {
> + size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
> + size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
> +} *my_snprintf_service;
> +size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
> +size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
> +#include <mysql/service_thd_alloc.h>
> +struct st_mysql_lex_string
> +{
> + char *str;
> + size_t length;
> +};
> +typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
> +extern struct thd_alloc_service_st {
> + void *(*thd_alloc_func)(void*, unsigned int);
> + void *(*thd_calloc_func)(void*, unsigned int);
> + char *(*thd_strdup_func)(void*, const char *);
> + char *(*thd_strmake_func)(void*, const char *, unsigned int);
> + void *(*thd_memdup_func)(void*, const void*, unsigned int);
> + MYSQL_LEX_STRING *(*thd_make_lex_string_func)(void*, MYSQL_LEX_STRING *,
> + const char *, unsigned int, int);
> +} *thd_alloc_service;
> +void *thd_alloc(void* thd, unsigned int size);
> +void *thd_calloc(void* thd, unsigned int size);
> +char *thd_strdup(void* thd, const char *str);
> +char *thd_strmake(void* thd, const char *str, unsigned int size);
> +void *thd_memdup(void* thd, const void* str, unsigned int size);
> +MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
> + const char *str, unsigned int size,
> + int allocate_lex_string);
> +struct st_mysql_xid {
> + long formatID;
> + long gtrid_length;
> + long bqual_length;
> + char data[128];
> +};
> +typedef struct st_mysql_xid MYSQL_XID;
> +enum enum_mysql_show_type
> +{
> + SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
> + SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
> + SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE,
> + SHOW_always_last
> +};
> +struct st_mysql_show_var {
> + const char *name;
> + char *value;
> + enum enum_mysql_show_type type;
> +};
> +typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, char *);
> +struct st_mysql_sys_var;
> +struct st_mysql_value;
> +typedef int (*mysql_var_check_func)(void* thd,
> + struct st_mysql_sys_var *var,
> + void *save, struct st_mysql_value *value);
> +typedef void (*mysql_var_update_func)(void* thd,
> + struct st_mysql_sys_var *var,
> + void *var_ptr, const void *save);
> +struct st_mysql_plugin
> +{
> + int type;
> + void *info;
> + const char *name;
> + const char *author;
> + const char *descr;
> + int license;
> + int (*init)(void *);
> + int (*deinit)(void *);
> + unsigned int version;
> + struct st_mysql_show_var *status_vars;
> + struct st_mysql_sys_var **system_vars;
> + void * __reserved1;
> +};
> +#include "plugin_ftparser.h"
> +struct st_mysql_daemon
> +{
> + int interface_version;
> +};
> +struct st_mysql_information_schema
> +{
> + int interface_version;
> +};
> +struct st_mysql_storage_engine
> +{
> + int interface_version;
> +};
> +struct handlerton;
> + struct Mysql_replication {
> + int interface_version;
> + };
> +struct st_mysql_value
> +{
> + int (*value_type)(struct st_mysql_value *);
> + const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
> + int (*val_real)(struct st_mysql_value *, double *realbuf);
> + int (*val_int)(struct st_mysql_value *, long long *intbuf);
> + int (*is_unsigned)(struct st_mysql_value *);
> +};
> +int thd_in_lock_tables(const void* thd);
> +int thd_tablespace_op(const void* thd);
> +long long thd_test_options(const void* thd, long long test_options);
> +int thd_sql_command(const void* thd);
> +const char *thd_proc_info(void* thd, const char *info);
> +void **thd_ha_data(const void* thd, const struct handlerton *hton);
> +void thd_storage_lock_wait(void* thd, long long value);
> +int thd_tx_isolation(const void* thd);
> +char *thd_security_context(void* thd, char *buffer, unsigned int length,
> + unsigned int max_query_len);
> +void thd_inc_row_count(void* thd);
> +int mysql_tmpfile(const char *prefix);
> +int thd_killed(const void* thd);
> +unsigned long thd_get_thread_id(const void* thd);
> +void thd_get_xid(const void* thd, MYSQL_XID *xid);
> +void mysql_query_cache_invalidate4(void* thd,
> + const char *key, unsigned int key_length,
> + int using_trx);
> +void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
> +void thd_set_ha_data(void* thd, const struct handlerton *hton,
> + const void *ha_data);
> +enum enum_ftparser_mode
> +{
> + MYSQL_FTPARSER_SIMPLE_MODE= 0,
> + MYSQL_FTPARSER_WITH_STOPWORDS= 1,
> + MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2
> +};
> +enum enum_ft_token_type
> +{
> + FT_TOKEN_EOF= 0,
> + FT_TOKEN_WORD= 1,
> + FT_TOKEN_LEFT_PAREN= 2,
> + FT_TOKEN_RIGHT_PAREN= 3,
> + FT_TOKEN_STOPWORD= 4
> +};
> +typedef struct st_mysql_ftparser_boolean_info
> +{
> + enum enum_ft_token_type type;
> + int yesno;
> + int weight_adjust;
> + char wasign;
> + char trunc;
> + char prev;
> + char *quot;
> +} MYSQL_FTPARSER_BOOLEAN_INFO;
> +typedef struct st_mysql_ftparser_param
> +{
> + int (*mysql_parse)(struct st_mysql_ftparser_param *,
> + char *doc, int doc_len);
> + int (*mysql_add_word)(struct st_mysql_ftparser_param *,
> + char *word, int word_len,
> + MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info);
> + void *ftparser_state;
> + void *mysql_ftparam;
> + struct charset_info_st *cs;
> + char *doc;
> + int length;
> + int flags;
> + enum enum_ftparser_mode mode;
> +} MYSQL_FTPARSER_PARAM;
> +struct st_mysql_ftparser
> +{
> + int interface_version;
> + int (*parse)(MYSQL_FTPARSER_PARAM *param);
> + int (*init)(MYSQL_FTPARSER_PARAM *param);
> + int (*deinit)(MYSQL_FTPARSER_PARAM *param);
> +};
>
>
>
>
>
>
--
Mats Kindahl
Lead Software Developer
MySQL Replication, Oracle