1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

MDEV-32862 MYSQL struct in C/C and server differs

move MYSQL::fields down, replacing MYSQL::unused5

this way only MYSQL::fields and MYSQL::field_alloc will still have
different offset in C/C and the server, but all other MYSQL members
will get back in sync.

luckily, plugins shouldn't need MYSQL::fields or MYSQL::field_alloc

added a check to ensure both MYSQL structures are always of
the same size.
This commit is contained in:
Sergei Golubchik
2023-11-23 10:00:37 +01:00
parent 361a11decb
commit c432c9ef19
2 changed files with 10 additions and 2 deletions

View File

@@ -274,7 +274,6 @@ typedef struct st_mysql
char *host,*user,*passwd,*unix_socket,*server_version,*host_info; char *host,*user,*passwd,*unix_socket,*server_version,*host_info;
char *info, *db; char *info, *db;
const struct charset_info_st *charset; const struct charset_info_st *charset;
MYSQL_FIELD *fields;
MEM_ROOT field_alloc; MEM_ROOT field_alloc;
my_ulonglong affected_rows; my_ulonglong affected_rows;
my_ulonglong insert_id; /* id if insert on table with NEXTNR */ my_ulonglong insert_id; /* id if insert on table with NEXTNR */
@@ -296,7 +295,8 @@ typedef struct st_mysql
/* session-wide random string */ /* session-wide random string */
char scramble[SCRAMBLE_LENGTH+1]; char scramble[SCRAMBLE_LENGTH+1];
my_bool auto_local_infile; my_bool auto_local_infile;
void *unused2, *unused3, *unused4, *unused5; void *unused2, *unused3, *unused4;
MYSQL_FIELD *fields;
LIST *stmts; /* list of all statements */ LIST *stmts; /* list of all statements */
const struct st_mysql_methods *methods; const struct st_mysql_methods *methods;

View File

@@ -1426,6 +1426,14 @@ int main(int argc, char **argv)
tests_to_run[i]= NULL; tests_to_run[i]= NULL;
} }
#ifdef _WIN32
/* must be the same in C/C and embedded, 1208 on 64bit, 968 on 32bit */
compile_time_assert(sizeof(MYSQL) == 60*sizeof(void*)+728);
#else
/* must be the same in C/C and embedded, 1272 on 64bit, 964 on 32bit */
compile_time_assert(sizeof(MYSQL) == 77*sizeof(void*)+656);
#endif
if (mysql_server_init(embedded_server_arg_count, if (mysql_server_init(embedded_server_arg_count,
embedded_server_args, embedded_server_args,
(char**) embedded_server_groups)) (char**) embedded_server_groups))