1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-07 02:42:49 +03:00

Add MYSQL_OPT_ZSTD_COMPRESSION_LEVEL

The compression level was always hard-coded to 3.
This commit is contained in:
Markus Mäkelä
2024-11-07 06:47:21 +02:00
parent 721103eba1
commit a2213b89d4
4 changed files with 14 additions and 1 deletions

View File

@@ -87,6 +87,7 @@ struct st_mysql_options_extension {
void (*status_callback)(void *ptr, enum enum_mariadb_status_info type, ...); void (*status_callback)(void *ptr, enum enum_mariadb_status_info type, ...);
void *status_data; void *status_data;
my_bool tls_verify_server_cert; my_bool tls_verify_server_cert;
char zstd_compression_level;
}; };
typedef struct st_connection_handler typedef struct st_connection_handler

View File

@@ -223,6 +223,7 @@ extern const char *SQLSTATE_UNKNOWN;
MYSQL_OPT_MAX_ALLOWED_PACKET, MYSQL_OPT_MAX_ALLOWED_PACKET,
MYSQL_OPT_NET_BUFFER_LENGTH, MYSQL_OPT_NET_BUFFER_LENGTH,
MYSQL_OPT_TLS_VERSION, MYSQL_OPT_TLS_VERSION,
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL,
/* MariaDB specific */ /* MariaDB specific */
MYSQL_PROGRESS_CALLBACK=5999, MYSQL_PROGRESS_CALLBACK=5999,

View File

@@ -711,6 +711,7 @@ struct st_default_options mariadb_defaults[] =
{{MYSQL_OPT_SSL_ENFORCE}, MARIADB_OPTION_BOOL, "tls-enforce"}, {{MYSQL_OPT_SSL_ENFORCE}, MARIADB_OPTION_BOOL, "tls-enforce"},
{{MYSQL_OPT_SSL_VERIFY_SERVER_CERT}, MARIADB_OPTION_BOOL,"tls-verify-peer"}, {{MYSQL_OPT_SSL_VERIFY_SERVER_CERT}, MARIADB_OPTION_BOOL,"tls-verify-peer"},
{{MARIADB_OPT_RESTRICTED_AUTH}, MARIADB_OPTION_STR, "restricted-auth"}, {{MARIADB_OPT_RESTRICTED_AUTH}, MARIADB_OPTION_STR, "restricted-auth"},
{{MYSQL_OPT_ZSTD_COMPRESSION_LEVEL}, MARIADB_OPTION_INT, "zstd-compression-level"},
{{0}, 0, NULL} {{0}, 0, NULL}
}; };
@@ -3836,6 +3837,9 @@ mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...)
} }
} }
break; break;
case MYSQL_OPT_ZSTD_COMPRESSION_LEVEL:
OPT_SET_EXTENDED_VALUE_INT(&mysql->options, zstd_compression_level, *((unsigned int *)arg1));
break;
default: default:
va_end(ap); va_end(ap);
SET_CLIENT_ERROR(mysql, CR_NOT_IMPLEMENTED, SQLSTATE_UNKNOWN, 0); SET_CLIENT_ERROR(mysql, CR_NOT_IMPLEMENTED, SQLSTATE_UNKNOWN, 0);

View File

@@ -407,7 +407,14 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
*/ */
if (mysql->client_flag & CLIENT_ZSTD_COMPRESSION) if (mysql->client_flag & CLIENT_ZSTD_COMPRESSION)
{ {
*end++= 3; uchar compression_level= 3;
if (mysql->options.extension &&
mysql->options.extension->zstd_compression_level >= 1 &&
mysql->options.extension->zstd_compression_level <= 20)
{
compression_level= mysql->options.extension->zstd_compression_level;
}
*end++= compression_level;
} }
/* Write authentication package */ /* Write authentication package */