From e40858a7bdc65be4386a9e74262731fae964958b Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Tue, 10 Mar 2020 16:05:42 +0400 Subject: MDEV-17832 Protocol: extensions for Pluggable types and JSON, GEOMETRY --- include/mysql.h | 11 +++++++++++ include/mysql.h.pp | 9 +++++++++ include/mysql_com.h | 12 ++++++++++++ 3 files changed, 32 insertions(+) (limited to 'include') diff --git a/include/mysql.h b/include/mysql.h index ec49ca0482a..6ff4c6d3fad 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -97,6 +97,9 @@ extern char *mysql_unix_port; #define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING) +typedef struct st_mysql_const_lex_string MARIADB_CONST_STRING; + + typedef struct st_mysql_field { char *name; /* Name of column */ char *org_name; /* Original column name, if an alias */ @@ -411,6 +414,14 @@ MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res); MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res); MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res); + + + +int STDCALL mariadb_field_attr(MARIADB_CONST_STRING *attr, + const MYSQL_FIELD *field, + enum mariadb_field_attr_t type); + + unsigned int STDCALL mysql_field_count(MYSQL *mysql); my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql); my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql); diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 4fcfab4aea4..705bf7e712c 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -28,6 +28,11 @@ enum enum_indicator_type STMT_INDICATOR_DEFAULT, STMT_INDICATOR_IGNORE }; +enum mariadb_field_attr_t +{ + MARIADB_FIELD_ATTR_DATA_TYPE_NAME= 0, + MARIADB_FIELD_ATTR_FORMAT_NAME= 1 +}; struct st_vio; typedef struct st_vio Vio; typedef struct st_net { @@ -207,6 +212,7 @@ extern int list_walk(LIST *,list_walk_action action,unsigned char * argument); extern unsigned int mariadb_deinitialize_ssl; extern unsigned int mysql_port; extern char *mysql_unix_port; +typedef struct st_mysql_const_lex_string MARIADB_CONST_STRING; typedef struct st_mysql_field { char *name; char *org_name; @@ -436,6 +442,9 @@ MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES *res, MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res); MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res); MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res); +int mariadb_field_attr(MARIADB_CONST_STRING *attr, + const MYSQL_FIELD *field, + enum mariadb_field_attr_t type); unsigned int mysql_field_count(MYSQL *mysql); my_ulonglong mysql_affected_rows(MYSQL *mysql); my_ulonglong mysql_insert_id(MYSQL *mysql); diff --git a/include/mysql_com.h b/include/mysql_com.h index cc89f014f8e..2bfacdeec20 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -298,6 +298,8 @@ enum enum_indicator_type #define MARIADB_CLIENT_COM_MULTI (1ULL << 33) /* support of array binding */ #define MARIADB_CLIENT_STMT_BULK_OPERATIONS (1ULL << 34) +/* support of extended metadata (e.g. type/format information) */ +#define MARIADB_CLIENT_EXTENDED_METADATA (1ULL << 35) #ifdef HAVE_COMPRESS #define CAN_CLIENT_COMPRESS CLIENT_COMPRESS @@ -339,6 +341,7 @@ enum enum_indicator_type CLIENT_CONNECT_ATTRS |\ MARIADB_CLIENT_COM_MULTI |\ MARIADB_CLIENT_STMT_BULK_OPERATIONS |\ + MARIADB_CLIENT_EXTENDED_METADATA|\ CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS) /* @@ -350,6 +353,15 @@ enum enum_indicator_type & ~CLIENT_COMPRESS) \ & ~CLIENT_SSL_VERIFY_SERVER_CERT) +enum mariadb_field_attr_t +{ + MARIADB_FIELD_ATTR_DATA_TYPE_NAME= 0, + MARIADB_FIELD_ATTR_FORMAT_NAME= 1 +}; + +#define MARIADB_FIELD_ATTR_LAST MARIADB_FIELD_ATTR_FORMAT_NAME + + /** Is raised when a multi-statement transaction has been started, either explicitly, by means -- cgit v1.2.1