You've already forked mariadb-connector-c
mirror of
https://github.com/mariadb-corporation/mariadb-connector-c.git
synced 2025-08-07 02:42:49 +03:00
Move mariadb specific client flags and server capabilities to mysql->extension
This commit is contained in:
@@ -84,6 +84,8 @@ struct st_mariadb_session_state
|
|||||||
struct st_mariadb_extension {
|
struct st_mariadb_extension {
|
||||||
MA_CONNECTION_HANDLER *conn_hdlr;
|
MA_CONNECTION_HANDLER *conn_hdlr;
|
||||||
struct st_mariadb_session_state session_state[SESSION_TRACK_TYPES];
|
struct st_mariadb_session_state session_state[SESSION_TRACK_TYPES];
|
||||||
|
unsigned long mariadb_client_flag; /* MariaDB specific client flags */
|
||||||
|
unsigned long mariadb_server_capabilities; /* MariaDB specific server capabilities */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define OPT_HAS_EXT_VAL(a,key) \
|
#define OPT_HAS_EXT_VAL(a,key) \
|
||||||
|
@@ -171,7 +171,8 @@ enum enum_server_command
|
|||||||
!(mysql->server_capabilities & CLIENT_MYSQL)
|
!(mysql->server_capabilities & CLIENT_MYSQL)
|
||||||
|
|
||||||
#define MARIADB_CLIENT_SUPPORTED_FLAGS (MARIADB_CLIENT_PROGRESS |\
|
#define MARIADB_CLIENT_SUPPORTED_FLAGS (MARIADB_CLIENT_PROGRESS |\
|
||||||
MARIADB_CLIENT_COM_MULTI)
|
MARIADB_CLIENT_COM_MULTI |\
|
||||||
|
MARIADB_CLIENT_STMT_BULK_OPERATIONS)
|
||||||
|
|
||||||
#define CLIENT_SUPPORTED_FLAGS (CLIENT_MYSQL |\
|
#define CLIENT_SUPPORTED_FLAGS (CLIENT_MYSQL |\
|
||||||
CLIENT_FOUND_ROWS |\
|
CLIENT_FOUND_ROWS |\
|
||||||
|
@@ -44,8 +44,6 @@ typedef char my_bool;
|
|||||||
#define STDCALL __stdcall
|
#define STDCALL __stdcall
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef my_socket_defined
|
#ifndef my_socket_defined
|
||||||
#define my_socket_defined
|
#define my_socket_defined
|
||||||
#if defined(_WIN64)
|
#if defined(_WIN64)
|
||||||
@@ -335,8 +333,8 @@ struct st_mysql_options {
|
|||||||
unsigned long thread_id; /* Id for connection in server */
|
unsigned long thread_id; /* Id for connection in server */
|
||||||
unsigned long packet_length;
|
unsigned long packet_length;
|
||||||
unsigned int port;
|
unsigned int port;
|
||||||
unsigned long long client_flag;
|
unsigned long client_flag;
|
||||||
unsigned long long server_capabilities; /* changed from long to longlong in 10.2 protocol */
|
unsigned long server_capabilities;
|
||||||
unsigned int protocol_version;
|
unsigned int protocol_version;
|
||||||
unsigned int field_count;
|
unsigned int field_count;
|
||||||
unsigned int server_status;
|
unsigned int server_status;
|
||||||
|
@@ -206,7 +206,7 @@ restart:
|
|||||||
|
|
||||||
if (last_errno== 65535 &&
|
if (last_errno== 65535 &&
|
||||||
((mariadb_connection(mysql) && (mysql->server_capabilities & CLIENT_PROGRESS)) ||
|
((mariadb_connection(mysql) && (mysql->server_capabilities & CLIENT_PROGRESS)) ||
|
||||||
(!(mysql->server_capabilities & CLIENT_MYSQL) && mysql->server_capabilities & MARIADB_CLIENT_PROGRESS)))
|
(!(mysql->extension->mariadb_server_capabilities & MARIADB_CLIENT_PROGRESS >> 32))))
|
||||||
{
|
{
|
||||||
if (cli_report_progress(mysql, (uchar *)pos, (uint) (len-1)))
|
if (cli_report_progress(mysql, (uchar *)pos, (uint) (len-1)))
|
||||||
{
|
{
|
||||||
@@ -1371,7 +1371,7 @@ MYSQL *mthd_my_real_connect(MYSQL *mysql, const char *host, const char *user,
|
|||||||
/* check if MariaD2B specific capabilities are available */
|
/* check if MariaD2B specific capabilities are available */
|
||||||
if (is_maria && !(mysql->server_capabilities & CLIENT_MYSQL))
|
if (is_maria && !(mysql->server_capabilities & CLIENT_MYSQL))
|
||||||
{
|
{
|
||||||
mysql->server_capabilities|= (ulonglong) uint4korr(end + 14) << 32;
|
mysql->extension->mariadb_server_capabilities= (ulonglong) uint4korr(end + 14);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -54,6 +54,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <mysql/client_plugin.h>
|
#include <mysql/client_plugin.h>
|
||||||
|
#include <ma_common.h>
|
||||||
|
|
||||||
#define STMT_NUM_OFS(type, a,r) ((type *)(a))[r]
|
#define STMT_NUM_OFS(type, a,r) ((type *)(a))[r]
|
||||||
#define MADB_RESET_ERROR 1
|
#define MADB_RESET_ERROR 1
|
||||||
@@ -598,7 +599,7 @@ unsigned char* mysql_stmt_execute_generate_request(MYSQL_STMT *stmt, size_t *req
|
|||||||
uint i, j, num_rows= 1;
|
uint i, j, num_rows= 1;
|
||||||
my_bool bulk_supported= stmt->array_size > 0 &&
|
my_bool bulk_supported= stmt->array_size > 0 &&
|
||||||
(!(stmt->mysql->server_capabilities & CLIENT_MYSQL) &&
|
(!(stmt->mysql->server_capabilities & CLIENT_MYSQL) &&
|
||||||
(stmt->mysql->server_capabilities & MARIADB_CLIENT_STMT_BULK_OPERATIONS));
|
(stmt->mysql->extension->mariadb_server_capabilities & MARIADB_CLIENT_STMT_BULK_OPERATIONS >> 32));
|
||||||
|
|
||||||
uchar *start= NULL, *p;
|
uchar *start= NULL, *p;
|
||||||
|
|
||||||
|
@@ -218,8 +218,8 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
|||||||
memset(buff + 9, 0, 32-9);
|
memset(buff + 9, 0, 32-9);
|
||||||
if (!(mysql->server_capabilities & CLIENT_MYSQL))
|
if (!(mysql->server_capabilities & CLIENT_MYSQL))
|
||||||
{
|
{
|
||||||
mysql->client_flag |= MARIADB_CLIENT_SUPPORTED_FLAGS;
|
mysql->extension->mariadb_client_flag = MARIADB_CLIENT_SUPPORTED_FLAGS >> 32;
|
||||||
int4store(buff + 28, mysql->client_flag >> 32);
|
int4store(buff + 28, mysql->extension->mariadb_client_flag);
|
||||||
}
|
}
|
||||||
end= buff+32;
|
end= buff+32;
|
||||||
}
|
}
|
||||||
|
@@ -921,7 +921,7 @@ static int test_sess_track_db(MYSQL *mysql)
|
|||||||
|
|
||||||
if (!(mysql->server_capabilities & CLIENT_SESSION_TRACKING))
|
if (!(mysql->server_capabilities & CLIENT_SESSION_TRACKING))
|
||||||
{
|
{
|
||||||
diag("Server doesn't support session tracking (cap=%llu)", mysql->server_capabilities);
|
diag("Server doesn't support session tracking (cap=%lu)", mysql->server_capabilities);
|
||||||
return SKIP;
|
return SKIP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user