1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-18313 Supports 'wrapper mariadb' for connection information

This commit is contained in:
Kentoku
2019-01-30 03:29:37 +09:00
committed by Sergei Golubchik
parent 470c1b8d56
commit 4e599c74bb
13 changed files with 1618 additions and 934 deletions

View File

@@ -13,11 +13,11 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
class spider_db_mysql_util: public spider_db_util
class spider_db_mbase_util: public spider_db_util
{
public:
spider_db_mysql_util();
~spider_db_mysql_util();
spider_db_mbase_util();
virtual ~spider_db_mbase_util();
int append_name(
spider_string *str,
const char *name,
@@ -174,7 +174,21 @@ public:
#endif
};
class spider_db_mysql_row: public spider_db_row
class spider_db_mysql_util: public spider_db_mbase_util
{
public:
spider_db_mysql_util();
~spider_db_mysql_util();
};
class spider_db_mariadb_util: public spider_db_mbase_util
{
public:
spider_db_mariadb_util();
~spider_db_mariadb_util();
};
class spider_db_mbase_row: public spider_db_row
{
public:
MYSQL_ROW row;
@@ -184,8 +198,10 @@ public:
uint field_count;
uint record_size;
bool cloned;
spider_db_mysql_row();
~spider_db_mysql_row();
spider_db_mbase_row(
uint dbton_id
);
virtual ~spider_db_mbase_row();
int store_to_field(
Field *field,
CHARSET_INFO *access_charset
@@ -214,15 +230,31 @@ public:
uint get_byte_size();
};
class spider_db_mysql_result: public spider_db_result
class spider_db_mysql_row: public spider_db_mbase_row
{
public:
spider_db_mysql_row();
~spider_db_mysql_row();
};
class spider_db_mariadb_row: public spider_db_mbase_row
{
public:
spider_db_mariadb_row();
~spider_db_mariadb_row();
};
class spider_db_mbase_result: public spider_db_result
{
public:
MYSQL_RES *db_result;
spider_db_mysql_row row;
spider_db_mbase_row row;
MYSQL_ROW_OFFSET first_row;
int store_error_num;
spider_db_mysql_result(SPIDER_DB_CONN *in_db_conn);
~spider_db_mysql_result();
spider_db_mbase_result(
SPIDER_DB_CONN *in_db_conn
);
virtual ~spider_db_mbase_result();
bool has_result();
void free_result();
SPIDER_DB_ROW *current_row();
@@ -289,9 +321,29 @@ public:
#endif
};
class spider_db_mysql: public spider_db_conn
class spider_db_mysql_result: public spider_db_mbase_result
{
int stored_error;
public:
spider_db_mysql_result(
SPIDER_DB_CONN *in_db_conn
);
~spider_db_mysql_result();
};
class spider_db_mariadb_result: public spider_db_mbase_result
{
public:
spider_db_mariadb_result(
SPIDER_DB_CONN *in_db_conn
);
~spider_db_mariadb_result();
};
class spider_db_mbase: public spider_db_conn
{
protected:
int stored_error;
spider_db_mbase_util *spider_db_mbase_utility;
public:
MYSQL *db_conn;
HASH lock_table_hash;
@@ -306,10 +358,11 @@ public:
const char *handler_open_array_func_name;
const char *handler_open_array_file_name;
ulong handler_open_array_line_no;
spider_db_mysql(
SPIDER_CONN *conn
spider_db_mbase(
SPIDER_CONN *conn,
spider_db_mbase_util *spider_db_mbase_utility
);
~spider_db_mysql();
virtual ~spider_db_mbase();
int init();
bool is_connected();
void bg_connect();
@@ -524,8 +577,28 @@ public:
);
};
class spider_mysql_share: public spider_db_share
class spider_db_mysql: public spider_db_mbase
{
public:
spider_db_mysql(
SPIDER_CONN *conn
);
~spider_db_mysql();
};
class spider_db_mariadb: public spider_db_mbase
{
public:
spider_db_mariadb(
SPIDER_CONN *conn
);
~spider_db_mariadb();
};
class spider_mbase_share: public spider_db_share
{
protected:
spider_db_mbase_util *spider_db_mbase_utility;
public:
spider_string *table_select;
int table_select_pos;
@@ -547,10 +620,12 @@ public:
bool same_db_table_name;
int first_all_link_idx;
spider_mysql_share(
st_spider_share *share
spider_mbase_share(
st_spider_share *share,
uint dbton_id,
spider_db_mbase_util *spider_db_mbase_utility
);
~spider_mysql_share();
virtual ~spider_mbase_share();
int init();
uint get_column_name_length(
uint field_index
@@ -585,7 +660,7 @@ public:
spider_string *str
);
#endif
private:
protected:
int create_table_names_str();
void free_table_names_str();
int create_column_name_str();
@@ -603,8 +678,28 @@ private:
);
};
class spider_mysql_handler: public spider_db_handler
class spider_mysql_share: public spider_mbase_share
{
public:
spider_mysql_share(
st_spider_share *share
);
~spider_mysql_share();
};
class spider_mariadb_share: public spider_mbase_share
{
public:
spider_mariadb_share(
st_spider_share *share
);
~spider_mariadb_share();
};
class spider_mbase_handler: public spider_db_handler
{
protected:
spider_db_mbase_util *spider_db_mbase_utility;
spider_string sql;
spider_string sql_part;
spider_string sql_part2;
@@ -614,7 +709,7 @@ class spider_mysql_handler: public spider_db_handler
int limit_pos;
public:
int table_name_pos;
private:
protected:
int ha_read_pos;
int ha_next_pos;
int ha_where_pos;
@@ -647,14 +742,15 @@ private:
SPIDER_INT_HLD *union_table_name_pos_first;
SPIDER_INT_HLD *union_table_name_pos_current;
public:
spider_mysql_share *mysql_share;
spider_mbase_share *mysql_share;
SPIDER_LINK_FOR_HASH *link_for_hash;
uchar *minimum_select_bitmap;
spider_mysql_handler(
spider_mbase_handler(
ha_spider *spider,
spider_mysql_share *share
spider_mbase_share *share,
spider_db_mbase_util *spider_db_mbase_utility
);
~spider_mysql_handler();
virtual ~spider_mbase_handler();
int init();
int append_index_hint(
spider_string *str,
@@ -1498,16 +1594,36 @@ public:
#endif
};
class spider_mysql_copy_table: public spider_db_copy_table
class spider_mysql_handler: public spider_mbase_handler
{
public:
spider_mysql_share *mysql_share;
spider_mysql_handler(
ha_spider *spider,
spider_mbase_share *share
);
~spider_mysql_handler();
};
class spider_mariadb_handler: public spider_mbase_handler
{
public:
spider_mariadb_handler(
ha_spider *spider,
spider_mbase_share *share
);
~spider_mariadb_handler();
};
class spider_mbase_copy_table: public spider_db_copy_table
{
public:
spider_mbase_share *mysql_share;
spider_string sql;
uint pos;
spider_mysql_copy_table(
spider_mysql_share *db_share
spider_mbase_copy_table(
spider_mbase_share *db_share
);
~spider_mysql_copy_table();
virtual ~spider_mbase_copy_table();
int init();
void set_sql_charset(
CHARSET_INFO *cs
@@ -1578,3 +1694,21 @@ public:
spider_db_copy_table *source_ct
);
};
class spider_mysql_copy_table: public spider_mbase_copy_table
{
public:
spider_mysql_copy_table(
spider_mbase_share *db_share
);
~spider_mysql_copy_table();
};
class spider_mariadb_copy_table: public spider_mbase_copy_table
{
public:
spider_mariadb_copy_table(
spider_mbase_share *db_share
);
~spider_mariadb_copy_table();
};