diff options
author | Sergey Vojtovich <svoj@sun.com> | 2010-08-27 10:45:35 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@sun.com> | 2010-08-27 10:45:35 +0400 |
commit | 8c05b08550229ae5d4432ef1e53f32f403edd213 (patch) | |
tree | 3ffa523bdf8ad13293c0cb25c77399b3a03bdecc | |
parent | e28d6ee66a8404dd0f8fe3aaabb9d72544e5d42e (diff) | |
download | mariadb-git-8c05b08550229ae5d4432ef1e53f32f403edd213.tar.gz |
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: -DMYSQL_ABI_CHECK is
compiler (not cmake) definition, incorrect definitions
were passed to do_abi_check.cmake for abi_check_all rule.
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.
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | cmake/abi_check.cmake | 18 | ||||
-rw-r--r-- | cmake/do_abi_check.cmake | 5 | ||||
-rw-r--r-- | include/mysql/plugin_audit.h.pp | 196 | ||||
-rw-r--r-- | include/mysql/plugin_ftparser.h.pp (renamed from include/mysql/plugin.h.pp) | 92 |
5 files changed, 257 insertions, 57 deletions
diff --git a/Makefile.am b/Makefile.am index 7ab9a9aa061..dcb55bdfa86 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ $(top_srcdir)/include/mysql.h \ $(top_srcdir)/include/mysql/psi/psi_abi_v1.h \ $(top_srcdir)/include/mysql/psi/psi_abi_v2.h diff --git a/cmake/abi_check.cmake b/cmake/abi_check.cmake index 7911b7848a8..b9ff9f7af73 100644 --- a/cmake/abi_check.cmake +++ b/cmake/abi_check.cmake @@ -15,7 +15,8 @@ # # Headers which need to be checked for abi/api compatibility are in -# API_PREPROCESSOR_HEADER. +# API_PREPROCESSOR_HEADER. plugin.h is tested implicitly via +# plugin_audit.h and plugin_ftparser.h. # # We use gcc specific preprocessing command and sed/diff, so it will # only be run on Unix and only if gcc is used. @@ -27,7 +28,8 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux") 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 ${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 +40,18 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux") -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}" -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() diff --git a/cmake/do_abi_check.cmake b/cmake/do_abi_check.cmake index aa7784e7372..78006bd018c 100644 --- a/cmake/do_abi_check.cmake +++ b/cmake/do_abi_check.cmake @@ -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 diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp new file mode 100644 index 00000000000..8481b2c92be --- /dev/null +++ b/include/mysql/plugin_audit.h.pp @@ -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]; +}; diff --git a/include/mysql/plugin.h.pp b/include/mysql/plugin_ftparser.h.pp index 55d62b8daab..bc77ef48eb7 100644 --- a/include/mysql/plugin.h.pp +++ b/include/mysql/plugin_ftparser.h.pp @@ -1,3 +1,4 @@ +#include "plugin.h" #include <mysql/services.h> #include <mysql/service_my_snprintf.h> extern struct my_snprintf_service_st { @@ -74,7 +75,51 @@ struct st_mysql_plugin void * __reserved1; }; #include "plugin_ftparser.h" -#include "plugin.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, @@ -121,48 +166,3 @@ struct st_mysql_ftparser 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); |