Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mariadb-connector-c for openSUSE:Factory checked in at 2021-10-23 23:13:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mariadb-connector-c (Old) and /work/SRC/openSUSE:Factory/.mariadb-connector-c.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mariadb-connector-c" Sat Oct 23 23:13:49 2021 rev:34 rq:926960 version:3.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/mariadb-connector-c/mariadb-connector-c.changes 2021-09-04 22:32:18.847909735 +0200 +++ /work/SRC/openSUSE:Factory/.mariadb-connector-c.new.1890/mariadb-connector-c.changes 2021-10-23 23:13:58.800981204 +0200 @@ -1,0 +2,8 @@ +Fri Oct 22 11:02:06 UTC 2021 - Danilo Spinella <danilo.spine...@suse.com> + +- Update to 3.2.4: + * release notes and changelog: + https://mariadb.com/kb/en/library/mariadb-connector-c-324-release-notes + https://mariadb.com/kb/en/library/mariadb-connector-c-324-changelog + +------------------------------------------------------------------- Old: ---- mariadb-connector-c-3.2.3-src.tar.gz mariadb-connector-c-3.2.3-src.tar.gz.asc New: ---- mariadb-connector-c-3.2.4-src.tar.gz mariadb-connector-c-3.2.4-src.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mariadb-connector-c.spec ++++++ --- /var/tmp/diff_new_pack.ggQFuR/_old 2021-10-23 23:13:59.216981408 +0200 +++ /var/tmp/diff_new_pack.ggQFuR/_new 2021-10-23 23:13:59.220981410 +0200 @@ -25,7 +25,7 @@ %endif %bcond_with sqlite3 Name: mariadb-connector-c -Version: 3.2.3 +Version: 3.2.4 Release: 0 Summary: MariaDB connector in C License: LGPL-2.1-or-later ++++++ mariadb-connector-c-3.2.3-src.tar.gz -> mariadb-connector-c-3.2.4-src.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/CMakeLists.txt new/mariadb-connector-c-3.2.4-src/CMakeLists.txt --- old/mariadb-connector-c-3.2.3-src/CMakeLists.txt 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/CMakeLists.txt 2021-07-28 06:06:11.000000000 +0200 @@ -36,7 +36,7 @@ SET(CPACK_PACKAGE_VERSION_MAJOR 3) SET(CPACK_PACKAGE_VERSION_MINOR 2) -SET(CPACK_PACKAGE_VERSION_PATCH 3) +SET(CPACK_PACKAGE_VERSION_PATCH 4) SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") MATH(EXPR MARIADB_PACKAGE_VERSION_ID "${CPACK_PACKAGE_VERSION_MAJOR} * 10000 + ${CPACK_PACKAGE_VERSION_MINOR} * 100 + @@ -164,8 +164,8 @@ SET(MARIADB_CLIENT_VERSION_EXTRA ${EXTRA_VERSION}) ELSE() SET(MARIADB_CLIENT_VERSION_MAJOR "10") - SET(MARIADB_CLIENT_VERSION_MINOR "5") - SET(MARIADB_CLIENT_VERSION_PATCH "5") + SET(MARIADB_CLIENT_VERSION_MINOR "6") + SET(MARIADB_CLIENT_VERSION_PATCH "4") SET(MARIADB_CLIENT_VERSION_EXTRA "") ENDIF() SET(MARIADB_CLIENT_VERSION "${MARIADB_CLIENT_VERSION_MAJOR}.${MARIADB_CLIENT_VERSION_MINOR}.${MARIADB_CLIENT_VERSION_PATCH}${MARIADB_CLIENT_VERSION_EXTRA}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/include/mariadb_stmt.h new/mariadb-connector-c-3.2.4-src/include/mariadb_stmt.h --- old/mariadb-connector-c-3.2.3-src/include/mariadb_stmt.h 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/include/mariadb_stmt.h 2021-07-28 06:06:11.000000000 +0200 @@ -161,46 +161,6 @@ char sqlstate[SQLSTATE_LENGTH + 1]; } mysql_error_info; - -struct st_mysqlnd_stmt_methods -{ - my_bool (*prepare)(const MYSQL_STMT * stmt, const char * const query, size_t query_len); - my_bool (*execute)(const MYSQL_STMT * stmt); - MYSQL_RES * (*use_result)(const MYSQL_STMT * stmt); - MYSQL_RES * (*store_result)(const MYSQL_STMT * stmt); - MYSQL_RES * (*get_result)(const MYSQL_STMT * stmt); - my_bool (*free_result)(const MYSQL_STMT * stmt); - my_bool (*seek_data)(const MYSQL_STMT * stmt, unsigned long long row); - my_bool (*reset)(const MYSQL_STMT * stmt); - my_bool (*close)(const MYSQL_STMT * stmt); /* private */ - my_bool (*dtor)(const MYSQL_STMT * stmt); /* use this for mysqlnd_stmt_close */ - - my_bool (*fetch)(const MYSQL_STMT * stmt, my_bool * const fetched_anything); - - my_bool (*bind_param)(const MYSQL_STMT * stmt, const MYSQL_BIND bind); - my_bool (*refresh_bind_param)(const MYSQL_STMT * stmt); - my_bool (*bind_result)(const MYSQL_STMT * stmt, const MYSQL_BIND *bind); - my_bool (*send_long_data)(const MYSQL_STMT * stmt, unsigned int param_num, - const char * const data, size_t length); - MYSQL_RES *(*get_parameter_metadata)(const MYSQL_STMT * stmt); - MYSQL_RES *(*get_result_metadata)(const MYSQL_STMT * stmt); - unsigned long long (*get_last_insert_id)(const MYSQL_STMT * stmt); - unsigned long long (*get_affected_rows)(const MYSQL_STMT * stmt); - unsigned long long (*get_num_rows)(const MYSQL_STMT * stmt); - - unsigned int (*get_param_count)(const MYSQL_STMT * stmt); - unsigned int (*get_field_count)(const MYSQL_STMT * stmt); - unsigned int (*get_warning_count)(const MYSQL_STMT * stmt); - - unsigned int (*get_error_no)(const MYSQL_STMT * stmt); - const char * (*get_error_str)(const MYSQL_STMT * stmt); - const char * (*get_sqlstate)(const MYSQL_STMT * stmt); - - my_bool (*get_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value); - my_bool (*set_attribute)(const MYSQL_STMT * stmt, enum enum_stmt_attr_type attr_type, const void * value); - void (*set_error)(MYSQL_STMT *stmt, unsigned int error_nr, const char *sqlstate, const char *format, ...); -}; - typedef int (*mysql_stmt_fetch_row_func)(MYSQL_STMT *stmt, unsigned char **row); typedef void (*ps_result_callback)(void *data, unsigned int column, unsigned char **row); typedef my_bool *(*ps_param_callback)(void *data, MYSQL_BIND *bind, unsigned int row_nr); @@ -239,13 +199,14 @@ mysql_stmt_fetch_row_func fetch_row_func; unsigned int execute_count;/* count how many times the stmt was executed */ mysql_stmt_use_or_store_func default_rset_handler; - struct st_mysqlnd_stmt_methods *m; + unsigned char *request_buffer; unsigned int array_size; size_t row_size; unsigned int prebind_params; void *user_data; ps_result_callback result_callback; ps_param_callback param_callback; + size_t request_length; }; typedef void (*ps_field_fetch_func)(MYSQL_BIND *r_param, const MYSQL_FIELD * field, unsigned char **row); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/include/mysql.h new/mariadb-connector-c-3.2.4-src/include/mysql.h --- old/mariadb-connector-c-3.2.3-src/include/mysql.h 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/include/mysql.h 2021-07-28 06:06:11.000000000 +0200 @@ -874,6 +874,7 @@ void (*invalidate_stmts)(MYSQL *mysql, const char *function_name); struct st_mariadb_api *api; int (*db_read_execute_response)(MYSQL_STMT *stmt); + unsigned char* (*db_execute_generate_request)(MYSQL_STMT *stmt, size_t *request_len, my_bool internal); }; /* synonyms/aliases functions */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/include/mysqld_error.h new/mariadb-connector-c-3.2.4-src/include/mysqld_error.h --- old/mariadb-connector-c-3.2.3-src/include/mysqld_error.h 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/include/mysqld_error.h 2021-07-28 06:06:11.000000000 +0200 @@ -727,7 +727,7 @@ #define ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT 1722 #define ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC 1723 #define ER_BINLOG_UNSAFE_INSERT_TWO_KEYS 1724 -#define ER_TABLE_IN_FK_CHECK 1725 +#define ER_UNUSED_28 1725 #define ER_UNUSED_1 1726 #define ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST 1727 #define ER_CANNOT_LOAD_FROM_TABLE_V2 1728 @@ -1047,8 +1047,8 @@ /* New section */ #define ER_ERROR_FIRST_SECTION_5 4000 -#define ER_COMMULTI_BADCONTEXT 4000 -#define ER_BAD_COMMAND_IN_MULTI 4001 +#define ER_UNUSED_26 4000 +#define ER_UNUSED_27 4001 #define ER_WITH_COL_WRONG_LIST 4002 #define ER_TOO_MANY_DEFINITIONS_IN_WITH_CLAUSE 4003 #define ER_DUP_QUERY_NAME 4004 @@ -1094,7 +1094,7 @@ #define ER_JSON_PATH_NO_WILDCARD 4044 #define ER_JSON_PATH_ARRAY 4045 #define ER_JSON_ONE_OR_ALL 4046 -#define ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE 4047 +#define ER_UNSUPPORTED_COMPRESSED_TABLE 4047 #define ER_GEOJSON_INCORRECT 4048 #define ER_GEOJSON_TOO_FEW_POINTS 4049 #define ER_GEOJSON_NOT_CLOSED 4050 @@ -1221,5 +1221,14 @@ #define ER_KEY_CANT_HAVE_WITHOUT_OVERLAPS 4171 #define ER_NOT_ALLOWED_IN_THIS_CONTEXT 4172 #define ER_DATA_WAS_COMMITED_UNDER_ROLLBACK 4173 -#define ER_ERROR_LAST 4173 +#define ER_PK_INDEX_CANT_BE_IGNORED 4174 +#define ER_BINLOG_UNSAFE_SKIP_LOCKED 4175 +#define ER_JSON_TABLE_ERROR_ON_FIELD 4176 +#define ER_JSON_TABLE_ALIAS_REQUIRED 4177 +#define ER_JSON_TABLE_SCALAR_EXPECTED 4178 +#define ER_JSON_TABLE_MULTIPLE_MATCHES 4179 +#define ER_WITH_TIES_NEEDS_ORDER 4180 +#define ER_REMOVED_ORPHAN_TRIGGER 4181 +#define ER_STORAGE_ENGINE_DISABLED 4182 +#define ER_ERROR_LAST 4182 #endif /* ER_ERROR_FIRST */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/libmariadb/ma_stmt_codec.c new/mariadb-connector-c-3.2.4-src/libmariadb/ma_stmt_codec.c --- old/mariadb-connector-c-3.2.3-src/libmariadb/ma_stmt_codec.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/libmariadb/ma_stmt_codec.c 2021-07-28 06:06:11.000000000 +0200 @@ -1240,27 +1240,27 @@ mysql_ps_fetch_functions[MYSQL_TYPE_TINY].func = ps_fetch_int8; mysql_ps_fetch_functions[MYSQL_TYPE_TINY].pack_len = 1; - mysql_ps_fetch_functions[MYSQL_TYPE_TINY].max_len = 4; + mysql_ps_fetch_functions[MYSQL_TYPE_TINY].max_len = 3; mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].func = ps_fetch_int16; mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].pack_len = 2; - mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].max_len = 6; + mysql_ps_fetch_functions[MYSQL_TYPE_SHORT].max_len = 5; mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].func = ps_fetch_int16; mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].pack_len = 2; - mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].max_len = 6; + mysql_ps_fetch_functions[MYSQL_TYPE_YEAR].max_len = 4; mysql_ps_fetch_functions[MYSQL_TYPE_INT24].func = ps_fetch_int32; mysql_ps_fetch_functions[MYSQL_TYPE_INT24].pack_len = 4; - mysql_ps_fetch_functions[MYSQL_TYPE_INT24].max_len = 9; + mysql_ps_fetch_functions[MYSQL_TYPE_INT24].max_len = 8; mysql_ps_fetch_functions[MYSQL_TYPE_LONG].func = ps_fetch_int32; mysql_ps_fetch_functions[MYSQL_TYPE_LONG].pack_len = 4; - mysql_ps_fetch_functions[MYSQL_TYPE_LONG].max_len = 11; + mysql_ps_fetch_functions[MYSQL_TYPE_LONG].max_len = 10; mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].func = ps_fetch_int64; mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].pack_len= 8; - mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].max_len = 21; + mysql_ps_fetch_functions[MYSQL_TYPE_LONGLONG].max_len = 20; mysql_ps_fetch_functions[MYSQL_TYPE_FLOAT].func = ps_fetch_float; mysql_ps_fetch_functions[MYSQL_TYPE_FLOAT].pack_len = 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/libmariadb/mariadb_lib.c new/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_lib.c --- old/mariadb-connector-c-3.2.3-src/libmariadb/mariadb_lib.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_lib.c 2021-07-28 06:06:11.000000000 +0200 @@ -104,6 +104,7 @@ const char *data_plugin, const char *db); extern int net_add_multi_command(NET *net, uchar command, const uchar *packet, size_t length); +extern unsigned char* ma_stmt_execute_generate_request(MYSQL_STMT *stmt, size_t *request_len, my_bool internal); extern LIST *pvio_callback; @@ -117,7 +118,7 @@ extern int mthd_stmt_fetch_to_bind(MYSQL_STMT *stmt, unsigned char *row); extern int mthd_stmt_read_all_rows(MYSQL_STMT *stmt); extern void mthd_stmt_flush_unbuffered(MYSQL_STMT *stmt); -extern my_bool _mariadb_read_options(MYSQL *mysql, const char *dir, const char *config_file, char *group, unsigned int recursion); +extern my_bool _mariadb_read_options(MYSQL *mysql, const char *dir, const char *config_file, const char *group, unsigned int recursion); extern unsigned char *mysql_net_store_length(unsigned char *packet, size_t length); extern void @@ -4518,5 +4519,7 @@ /* API functions */ &MARIADB_API, /* read execute response */ - mthd_stmt_read_execute_response + mthd_stmt_read_execute_response, + /* generate execute request */ + ma_stmt_execute_generate_request, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/libmariadb/mariadb_stmt.c new/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_stmt.c --- old/mariadb-connector-c-3.2.3-src/libmariadb/mariadb_stmt.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/libmariadb/mariadb_stmt.c 2021-07-28 06:06:11.000000000 +0200 @@ -673,8 +673,8 @@ return 0; } -/* {{{ mysqlnd_stmt_execute_generate_simple_request */ -unsigned char* mysql_stmt_execute_generate_simple_request(MYSQL_STMT *stmt, size_t *request_len) +/* {{{ ma_stmt_execute_generate_simple_request */ +unsigned char* ma_stmt_execute_generate_simple_request(MYSQL_STMT *stmt, size_t *request_len) { /* execute packet has the following format: Offset Length Description @@ -854,8 +854,8 @@ } /* }}} */ -/* {{{ mysql_stmt_execute_generate_bulk_request */ -unsigned char* mysql_stmt_execute_generate_bulk_request(MYSQL_STMT *stmt, size_t *request_len) +/* {{{ ma_stmt_execute_generate_bulk_request */ +unsigned char* ma_stmt_execute_generate_bulk_request(MYSQL_STMT *stmt, size_t *request_len) { /* execute packet has the following format: Offset Length Description @@ -1046,6 +1046,40 @@ return NULL; } /* }}} */ + + +unsigned char* ma_stmt_execute_generate_request(MYSQL_STMT *stmt, size_t *request_len, my_bool internal) +{ + unsigned char *buf; + + + if (stmt->request_buffer) + { + *request_len= stmt->request_length; + buf= stmt->request_buffer; + /* store actual stmt id */ + int4store(buf, stmt->stmt_id); + /* clear buffer, memory will be freed in execute */ + stmt->request_buffer= NULL; + stmt->request_length= 0; + return buf; + } + if (stmt->array_size > 0) + buf= ma_stmt_execute_generate_bulk_request(stmt, request_len); + else + buf= ma_stmt_execute_generate_simple_request(stmt, request_len); + + if (internal) + { + if (stmt->request_buffer) + free(stmt->request_buffer); + stmt->request_buffer= buf; + stmt->request_length= *request_len; + } + return buf; +} + + /*! ******************************************************************************* @@ -1122,7 +1156,7 @@ stmt->state= MYSQL_STMT_INITTED; stmt->params= 0; } - stmt->prebind_params= *(unsigned int *)value; + stmt->prebind_params= stmt->param_count= *(unsigned int *)value; break; case STMT_ATTR_ARRAY_SIZE: stmt->array_size= *(unsigned int *)value; @@ -2056,11 +2090,8 @@ } /* CONC-344: set row count to zero */ stmt->result.rows= 0; - if (stmt->array_size > 0) - request= (char *)mysql_stmt_execute_generate_bulk_request(stmt, &request_len); - else - request= (char *)mysql_stmt_execute_generate_simple_request(stmt, &request_len); + request= (char *)ma_stmt_execute_generate_request(stmt, &request_len, 0); if (!request) return 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/libmariadb/win32_errmsg.c new/mariadb-connector-c-3.2.4-src/libmariadb/win32_errmsg.c --- old/mariadb-connector-c-3.2.3-src/libmariadb/win32_errmsg.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/libmariadb/win32_errmsg.c 2021-07-28 06:06:11.000000000 +0200 @@ -117,7 +117,7 @@ return; if (entry) { - sprintf_s(cur, end - cur, "%s. Error 0x%08lX(%s)", entry->msg, code, entry->sym); + snprintf(cur, end - cur, "%s. Error 0x%08lX(%s)", entry->msg, code, entry->sym); } else { @@ -131,7 +131,8 @@ cur++; *cur = 0; } - sprintf_s(cur, end - cur, ". Error %lu/0x%08lX", code, code); + snprintf(cur, end - cur, ". Error %lu/0x%08lX", code, code); } + end[-1] = 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/plugins/auth/caching_sha2_pw.c new/mariadb-connector-c-3.2.4-src/plugins/auth/caching_sha2_pw.c --- old/mariadb-connector-c-3.2.3-src/plugins/auth/caching_sha2_pw.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/plugins/auth/caching_sha2_pw.c 2021-07-28 06:06:11.000000000 +0200 @@ -1,5 +1,5 @@ /************************************************************************************ - Copyright (C) 2017 MariaDB Corporation AB + Copyright (C) 2017, 2021, MariaDB Corporation AB This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -340,16 +340,15 @@ #if defined(HAVE_OPENSSL) bio= BIO_new_mem_buf(filebuffer ? (unsigned char *)filebuffer : packet, packet_length); - if ((pubkey= PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL))) - { - if (!(ctx= EVP_PKEY_CTX_new(pubkey, NULL))) - goto error; - if (EVP_PKEY_encrypt_init(ctx) <= 0) - goto error; - if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) - goto error; - rsa_size= EVP_PKEY_size(pubkey); - } + if (!(pubkey= PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL))) + goto error; + if (!(ctx= EVP_PKEY_CTX_new(pubkey, NULL))) + goto error; + if (EVP_PKEY_encrypt_init(ctx) <= 0) + goto error; + if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) + goto error; + rsa_size= EVP_PKEY_size(pubkey); BIO_free(bio); bio= NULL; ERR_clear_error(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/plugins/auth/sha256_pw.c new/mariadb-connector-c-3.2.4-src/plugins/auth/sha256_pw.c --- old/mariadb-connector-c-3.2.3-src/plugins/auth/sha256_pw.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/plugins/auth/sha256_pw.c 2021-07-28 06:06:11.000000000 +0200 @@ -1,5 +1,5 @@ /************************************************************************************ - Copyright (C) 2017 MariaDB Corporation AB + Copyright (C) 2017, 2021, MariaDB Corporation AB This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -232,16 +232,15 @@ #if defined(HAVE_OPENSSL) bio= BIO_new_mem_buf(filebuffer ? (unsigned char *)filebuffer : packet, packet_length); - if ((pubkey= PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL))) - { - if (!(ctx= EVP_PKEY_CTX_new(pubkey, NULL))) - goto error; - if (EVP_PKEY_encrypt_init(ctx) <= 0) - goto error; - if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) - goto error; - rsa_size= EVP_PKEY_size(pubkey); - } + if (!(pubkey= PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL))) + goto error; + if (!(ctx= EVP_PKEY_CTX_new(pubkey, NULL))) + goto error; + if (EVP_PKEY_encrypt_init(ctx) <= 0) + goto error; + if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) + goto error; + rsa_size= EVP_PKEY_size(pubkey); BIO_free(bio); bio= NULL; ERR_clear_error(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/CMakeLists.txt new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/CMakeLists.txt --- old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/CMakeLists.txt 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/CMakeLists.txt 2021-07-28 06:06:11.000000000 +0200 @@ -34,7 +34,7 @@ SET(API_TESTS ${API_TESTS} "async") #exclude following tests from ctests, since we need to run them maually with different credentials -SET(MANUAL_TESTS "t_aurora" "t_conc173" "rpl_api") +SET(MANUAL_TESTS "t_conc173" "rpl_api") # Get finger print from server certificate IF(WITH_SSL) IF(CERT_PATH AND NOT DEFINED ENV{TRAVIS}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/cursor.c new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/cursor.c --- old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/cursor.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/cursor.c 2021-07-28 06:06:11.000000000 +0200 @@ -1494,10 +1494,7 @@ int rc; unsigned long type= CURSOR_TYPE_READ_ONLY; - rc= mysql_query(mysql, "DROP TABLE IF EXISTS t10"); - check_mysql_rc(rc, mysql); - - rc= mysql_query(mysql, "CREATE TABLE t10 (a INT)"); + rc= mysql_query(mysql, "CREATE TEMPORARY TABLE t10 (a INT)"); check_mysql_rc(rc, mysql); stmt= mysql_stmt_init(mysql); @@ -1510,6 +1507,9 @@ check_stmt_rc(rc, stmt); mysql_stmt_close(stmt); + rc= mysql_query(mysql, "DROP TABLE t10"); + check_mysql_rc(rc, mysql); + return OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/misc.c new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/misc.c --- old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/misc.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/misc.c 2021-07-28 06:06:11.000000000 +0200 @@ -846,10 +846,14 @@ check_mysql_rc(rc, mysql); res= mysql_store_result(mysql); row= mysql_fetch_row(res); - if (atol(row[0]) == 0) { + + i= !atol(row[0]); + if (i) { diag("Load local infile disable"); + mysql_free_result(res); return SKIP; } + mysql_free_result(res); fp= fopen("./sample.csv", "w"); for (i=1; i < 4; i++) @@ -1067,6 +1071,7 @@ int rc; MYSQL_RES *res; MYSQL_ROW row; + SKIP_SKYSQL; SKIP_SKYSQL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/ps.c new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/ps.c --- old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/ps.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/ps.c 2021-07-28 06:06:11.000000000 +0200 @@ -5118,7 +5118,60 @@ return OK; } +static int test_conc565(MYSQL *mysql) +{ + MYSQL_STMT *stmt= mysql_stmt_init(mysql); + MYSQL_FIELD *fields_binary, *fields_text; + MYSQL_RES *result; + int rc; + unsigned int i; + my_bool x=1; + my_bool error= 0; + + rc= mysql_query(mysql, "CREATE TEMPORARY TABLE t1 (a year, b tinyint unsigned, c smallint unsigned, d mediumint unsigned, e int unsigned, f bigint unsigned)"); + check_mysql_rc(rc, mysql); + + rc= mysql_query(mysql, "INSERT INTO t1 VALUES (2020, 127, 0xFFFF, 0xFFFFFF, 0xFFFFFFFF, 0xFFFFFFFFFFFFFFFF)"); + check_mysql_rc(rc, mysql); + + rc= mysql_stmt_prepare(stmt, "select a,b,c,d,e,f from t1", -1); + check_stmt_rc(rc, stmt); + + rc= mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void *)&x); + check_stmt_rc(rc, stmt); + + rc= mysql_stmt_execute(stmt); + check_stmt_rc(rc, stmt); + + mysql_stmt_store_result(stmt); + fields_binary= mariadb_stmt_fetch_fields(stmt); + + rc= mysql_query(mysql, "SELECT a,b,c,d,e,f FROM t1"); + result= mysql_store_result(mysql); + fields_text= mysql_fetch_fields(result); + + for (i=0; i < mysql_field_count(mysql); i++) + { + if (fields_binary[i].length != fields_text[i].length || + fields_binary[i].max_length != fields_text[i].max_length) + { + diag("Sizes differ for column %d (type= %d)", i, fields_binary[i].type); + diag("Binary (length=%ld max_length=%ld) != Text(length=%ld max_length=%ld", + fields_binary[i].length, fields_binary[i].max_length, + fields_text[i].length, fields_text[i].max_length); + error= 1; + goto end; + } + } +end: + mysql_free_result(result); + mysql_stmt_close(stmt); + + return error ? FAIL : OK; +} + struct my_tests_st my_tests[] = { + {"test_conc565", test_conc565, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_conc349", test_conc349, TEST_CONNECTION_DEFAULT, 0, NULL, NULL}, {"test_prepare_error", test_prepare_error, TEST_CONNECTION_NEW, 0, NULL, NULL}, {"test_reexecute", test_reexecute, TEST_CONNECTION_NEW, 0, NULL, NULL}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/t_aurora.c new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/t_aurora.c --- old/mariadb-connector-c-3.2.3-src/unittest/libmariadb/t_aurora.c 2021-07-05 12:43:06.000000000 +0200 +++ new/mariadb-connector-c-3.2.4-src/unittest/libmariadb/t_aurora.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,164 +0,0 @@ -/* -*/ - -#include "my_test.h" -#include "ma_pvio.h" - -static int aurora1(MYSQL *unused __attribute__((unused))) -{ - int rc; - my_bool read_only= 1; - char *primary, *my_schema; - MYSQL_RES *res; - MYSQL *mysql= mysql_init(NULL); - - if (!mysql_real_connect(mysql, hostname, username, password, schema, port, NULL, 0)) - { - diag("Error: %s", mysql_error(mysql)); - mysql_close(mysql); - return FAIL; - } - - rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); - check_mysql_rc(rc, mysql); - - rc= mysql_query(mysql, "CREATE TABLE t1 (a int, b varchar(20))"); - check_mysql_rc(rc, mysql); - - rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1, 'foo'), (2, 'bar')"); - check_mysql_rc(rc, mysql); - - mariadb_get_infov(mysql, MARIADB_CONNECTION_HOST, &primary); - diag("primary: %s", primary); - - mysql_options(mysql, MARIADB_OPT_CONNECTION_READ_ONLY, &read_only); - - /* ensure, that this is a replica, so INSERT should fail */ - rc= mysql_query(mysql, "INSERT INTO t1 VALUES (3, 'error')"); - if (rc) - diag("Expected error: %s", mysql_error(mysql)); - - rc= mysql_query(mysql, "SELECT a, b FROM t1"); - check_mysql_rc(rc, mysql); - - res= mysql_store_result(mysql); - - diag("Num_rows: %lld", mysql_num_rows(res)); - mysql_free_result(res); - - mariadb_get_infov(mysql, MARIADB_CONNECTION_SCHEMA, &my_schema); - diag("db: %s", my_schema); - - mysql_close(mysql); - - return OK; -} - -static int test_wrong_user(MYSQL *unused __attribute__((unused))) -{ - MYSQL *mysql= mysql_init(NULL); - - if (mysql_real_connect(mysql, hostname, "wrong_user", NULL, NULL, 0, NULL, 0)) - { - diag("Error expected"); - mysql_close(mysql); - return FAIL; - } - mysql_close(mysql); - return OK; -} - -static int test_reconnect(MYSQL *unused __attribute__((unused))) -{ - MYSQL *mysql= mysql_init(NULL); - MYSQL_RES *res; - my_bool read_only= 1; - int rc; - my_bool reconnect= 1; - char *aurora_host; - - mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect); - - if (!mysql_real_connect(mysql, hostname, username, password, schema, port, NULL, 0)) - { - diag("Error: %s", mysql_error(mysql)); - mysql_close(mysql); - return FAIL; - } - - mariadb_get_infov(mysql, MARIADB_CONNECTION_HOST, &aurora_host); - diag("host: %s", aurora_host); - - rc= mysql_query(mysql, "DROP TABLE IF EXISTS tx01"); - check_mysql_rc(rc, mysql); - rc= mysql_query(mysql, "CREATE TABLE tx01 (a int)"); - check_mysql_rc(rc, mysql); - - /* we force cluster restart and promoting new primary: - * we wait for 50 seconds - however there is no guarantee that - * cluster was restarted already - so this test might fail */ - rc= system("/usr/local/aws/bin/aws rds failover-db-cluster --db-cluster-identifier instance-1-cluster"); - - diag("aws return code: %d", rc); - - sleep(50); - diag("Q1"); - rc= mysql_query(mysql, "INSERT INTO tx01 VALUES (1)"); - if (!rc) - diag("error expected!"); - diag("Error: %s", mysql_error(mysql)); - - diag("Q2"); - rc= mysql_query(mysql, "INSERT INTO tx01 VALUES (1)"); - if (rc) - { - diag("no error expected!"); - diag("Error: %s", mysql_error(mysql)); - diag("host: %s", mysql->host); - } - else - { - mariadb_get_infov(mysql, MARIADB_CONNECTION_HOST, &aurora_host); - diag("host: %s", aurora_host); - } - - mysql_options(mysql, MARIADB_OPT_CONNECTION_READ_ONLY, &read_only); - - rc= mysql_query(mysql, "SELECT * from tx01"); - check_mysql_rc(rc, mysql); - - if ((res= mysql_store_result(mysql))) - { - diag("num_rows: %lld", mysql_num_rows(res)); - mysql_free_result(res); - } - - mariadb_get_infov(mysql, MARIADB_CONNECTION_HOST, &aurora_host); - diag("host: %s", aurora_host); - - mysql_close(mysql); - return OK; -} - -struct my_tests_st my_tests[] = { - {"aurora1", aurora1, TEST_CONNECTION_NONE, 0, NULL, NULL}, - {"test_wrong_user", test_wrong_user, TEST_CONNECTION_NONE, 0, NULL, NULL}, - {"test_reconnect", test_reconnect, TEST_CONNECTION_NONE, 0, NULL, NULL}, - {NULL, NULL, 0, 0, NULL, NULL} -}; - - -int main(int argc, char **argv) -{ - mysql_library_init(0,0,NULL); - - if (argc > 1) - get_options(argc, argv); - - get_envvars(); - - run_tests(my_tests); - - mysql_server_end(); - return(exit_status()); -}