Skip to content

Commit

Permalink
Further refactor MYSQL_PROXY (#119)
Browse files Browse the repository at this point in the history
* create DUMMY_PROXY to handle mysql library calls, refactor MYSQL_PROXY to only forward proxy call

* remove commented include

* include thread header in dummy proxy

* rename mysql_proxy to connection_proxy

* rename dummy proxy to mysql proxy

* remove secrets manager proxy as it should be a different PR

* include in alphabetical order
  • Loading branch information
yanw-bq committed May 2, 2023
1 parent 4e8126f commit 201ebb8
Show file tree
Hide file tree
Showing 45 changed files with 1,204 additions and 930 deletions.
4 changes: 2 additions & 2 deletions driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ WHILE(${DRIVER_INDEX} LESS ${DRIVERS_COUNT})
base_metrics_holder.cc catalog.cc catalog_no_i_s.cc cluster_topology_info.cc
cluster_aware_hit_metrics_holder.cc cluster_aware_metrics_container.cc
cluster_aware_metrics.cc cluster_aware_time_metrics_holder.cc
connect.cc connection_handler.cc cursor.cc desc.cc dll.cc driver.cc efm_proxy.cc
connect.cc connection_handler.cc connection_proxy.cc cursor.cc desc.cc dll.cc driver.cc efm_proxy.cc
error.cc execute.cc failover_handler.cc
failover_reader_handler.cc failover_writer_handler.cc handle.cc host_info.cc info.cc
monitor.cc monitor_connection_context.cc monitor_service.cc monitor_thread_container.cc
Expand All @@ -83,7 +83,7 @@ WHILE(${DRIVER_INDEX} LESS ${DRIVERS_COUNT})
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/driver/driver.rc.cmake ${CMAKE_SOURCE_DIR}/driver/driver${CONNECTOR_DRIVER_TYPE_SHORT}.rc @ONLY)
SET(DRIVER_SRCS ${DRIVER_SRCS} driver${CONNECTOR_DRIVER_TYPE_SHORT}.def driver${CONNECTOR_DRIVER_TYPE_SHORT}.rc
base_metrics_holder.h catalog.h cluster_aware_hit_metrics_holder.h cluster_aware_metrics_container.h
cluster_aware_metrics.h cluster_aware_time_metrics_holder.h cluster_topology_info.h connection_handler.h
cluster_aware_metrics.h cluster_aware_time_metrics_holder.h cluster_topology_info.h connection_handler.h connection_proxy.h
driver.h efm_proxy.h error.h failover.h host_info.h monitor.h monitor_connection_context.h monitor_service.h
monitor_thread_container.h mylog.h mysql_proxy.h myutil.h parse.h query_parsing.h topology_service.h
../MYODBC_MYSQL.h ../MYODBC_CONF.h ../MYODBC_ODBC.h)
Expand Down
2 changes: 1 addition & 1 deletion driver/ansi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ SQLDescribeCol(SQLHSTMT hstmt, SQLUSMALLINT column,

if (free_value == -1)
{
set_mem_error(stmt->dbc->mysql_proxy);
set_mem_error(stmt->dbc->connection_proxy);
return handle_connection_error(stmt);
}

Expand Down
52 changes: 26 additions & 26 deletions driver/catalog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ create_fake_resultset(STMT *stmt, MYSQL_ROW rowval, size_t rowsize,
else
{
if (stmt->result)
stmt->dbc->mysql_proxy->free_result(stmt->result);
stmt->dbc->connection_proxy->free_result(stmt->result);
}

/* Free if result data was not in row storage */
Expand All @@ -178,7 +178,7 @@ create_fake_resultset(STMT *stmt, MYSQL_ROW rowval, size_t rowsize,
x_free(stmt->result);
x_free(stmt->result_array);

set_mem_error(stmt->dbc->mysql_proxy);
set_mem_error(stmt->dbc->connection_proxy);
return handle_connection_error(stmt);
}
stmt->fake_result= 1;
Expand Down Expand Up @@ -257,7 +257,7 @@ MYSQL_RES *db_status(STMT *stmt, std::string &db)
return NULL;
}

return stmt->dbc->mysql_proxy->store_result();
return stmt->dbc->connection_proxy->store_result();
}


Expand Down Expand Up @@ -285,7 +285,7 @@ static MYSQL_RES *table_status_i_s(STMT *stmt,
my_bool show_tables,
my_bool show_views)
{
MYSQL_PROXY *mysql_proxy= stmt->dbc->mysql_proxy;
CONNECTION_PROXY *connection_proxy= stmt->dbc->connection_proxy;
/** the buffer size should count possible escapes */
my_bool clause_added= FALSE;
std::string query;
Expand Down Expand Up @@ -344,7 +344,7 @@ static MYSQL_RES *table_status_i_s(STMT *stmt,
query.append("AND TABLE_NAME LIKE '");
if (wildcard)
{
cnt = mysql_proxy->real_escape_string(tmpbuff, (char *)table_name, table_len);
cnt = connection_proxy->real_escape_string(tmpbuff, (char *)table_name, table_len);
query.append(tmpbuff, cnt);
}
else
Expand All @@ -365,7 +365,7 @@ static MYSQL_RES *table_status_i_s(STMT *stmt,
return NULL;
}

return mysql_proxy->store_result();
return connection_proxy->store_result();
}


Expand All @@ -391,7 +391,7 @@ static MYSQL_RES *table_status_i_s_old(STMT *stmt,
my_bool show_tables,
my_bool show_views)
{
MYSQL_PROXY *mysql_proxy= stmt->dbc->mysql_proxy;
CONNECTION_PROXY *connection_proxy= stmt->dbc->connection_proxy;
/** the buffer size should count possible escapes */
my_bool clause_added= FALSE;
std::string query;
Expand Down Expand Up @@ -449,7 +449,7 @@ static MYSQL_RES *table_status_i_s_old(STMT *stmt,
query.append("WHERE TABLE_NAME LIKE '");
if (wildcard)
{
cnt = mysql_proxy->real_escape_string(tmpbuff, (char *)table_name, table_len);
cnt = connection_proxy->real_escape_string(tmpbuff, (char *)table_name, table_len);
query.append(tmpbuff, cnt);
}
else
Expand All @@ -468,7 +468,7 @@ static MYSQL_RES *table_status_i_s_old(STMT *stmt,
return NULL;
}

return mysql_proxy->store_result();
return connection_proxy->store_result();
}


Expand Down Expand Up @@ -528,7 +528,7 @@ int add_name_condition_oa_id(HSTMT hstmt, std::string &query, SQLCHAR * name,

query.append("'");
char tmpbuff[1024];
size_t cnt = stmt->dbc->mysql_proxy->real_escape_string(tmpbuff, (char *)name, name_len);
size_t cnt = stmt->dbc->connection_proxy->real_escape_string(tmpbuff, (char *)name, name_len);
query.append(tmpbuff, cnt);
query.append("' ");
}
Expand Down Expand Up @@ -574,7 +574,7 @@ int add_name_condition_pv_id(HSTMT hstmt, std::string &query, SQLCHAR * name,

query.append("'");
char tmpbuff[1024];
size_t cnt = stmt->dbc->mysql_proxy->real_escape_string(tmpbuff, (char *)name, name_len);
size_t cnt = stmt->dbc->connection_proxy->real_escape_string(tmpbuff, (char *)name, name_len);
query.append(tmpbuff, cnt);
query.append("' ");
}
Expand Down Expand Up @@ -808,7 +808,7 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
if (no_ssps)
{
query.append("'");
auto cnt = stmt->dbc->mysql_proxy->real_escape_string(temp.buf, (char*)data, len);
auto cnt = stmt->dbc->connection_proxy->real_escape_string(temp.buf, (char*)data, len);
query.append(temp.buf, cnt);
query.append("'");
}
Expand Down Expand Up @@ -861,7 +861,7 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
do_bind(params, column, MYSQL_TYPE_STRING, column_len);
}
query.append(" ORDER BY ORDINAL_POSITION");
ODBC_STMT local_stmt(stmt->dbc->mysql_proxy);
ODBC_STMT local_stmt(stmt->dbc->connection_proxy);

if (!no_ssps)
{
Expand Down Expand Up @@ -904,7 +904,7 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
// Throwing the error for NO_SSPS case.
throw stmt->dbc->error;
}
mysql_res = stmt->dbc->mysql_proxy->store_result();
mysql_res = stmt->dbc->connection_proxy->store_result();
}
}
catch (const MYERROR &e)
Expand All @@ -920,8 +920,8 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
is_access = true;
#endif

size_t rows = no_ssps ? stmt->dbc->mysql_proxy->num_rows(mysql_res) :
stmt->dbc->mysql_proxy->stmt_num_rows(local_stmt);
size_t rows = no_ssps ? stmt->dbc->connection_proxy->num_rows(mysql_res) :
stmt->dbc->connection_proxy->stmt_num_rows(local_stmt);
stmt->m_row_storage.set_size(rows, SQLCOLUMNS_FIELDS);
if (rows == 0)
{
Expand All @@ -948,19 +948,19 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
{
if (no_ssps == false)
{
if (stmt->dbc->mysql_proxy->stmt_fetch(local_stmt))
if (stmt->dbc->connection_proxy->stmt_fetch(local_stmt))
return (MYSQL_ROW)nullptr;
for (int i = 0; i < ccount; ++i)
mysql_stmt_row[i] = (char*)ssps_res[i].buffer;
return (MYSQL_ROW)mysql_stmt_row;
}
return stmt->dbc->mysql_proxy->fetch_row(mysql_res);
return stmt->dbc->connection_proxy->fetch_row(mysql_res);
};

while(mysql_row = _fetch_row())
{
if (no_ssps)
result_lengths = stmt->dbc->mysql_proxy->fetch_lengths(mysql_res);
result_lengths = stmt->dbc->connection_proxy->fetch_lengths(mysql_res);

CAT_SCHEMA_SET(data[0], data[1], db);
/* TABLE_NAME */
Expand Down Expand Up @@ -1056,7 +1056,7 @@ columns_i_s(SQLHSTMT hstmt, SQLCHAR *catalog, unsigned long catalog_len,
}

if (mysql_res)
stmt->dbc->mysql_proxy->free_result(mysql_res);
stmt->dbc->connection_proxy->free_result(mysql_res);

if (rows)
{
Expand Down Expand Up @@ -1459,7 +1459,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,
SQLSMALLINT fk_table_len)
{
STMT *stmt=(STMT *) hstmt;
MYSQL_PROXY *mysql_proxy= stmt->dbc->mysql_proxy;
CONNECTION_PROXY *connection_proxy= stmt->dbc->connection_proxy;
char tmpbuff[1024]; /* This should be big enough. */
char *update_rule, *delete_rule, *ref_constraints_join;
SQLRETURN rc;
Expand All @@ -1475,7 +1475,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,
/*
With 5.1, we can use REFERENTIAL_CONSTRAINTS to get even more info.
*/
if (is_minimum_version(stmt->dbc->mysql_proxy->get_server_version(), "5.1"))
if (is_minimum_version(stmt->dbc->connection_proxy->get_server_version(), "5.1"))
{
update_rule= "CASE"
" WHEN R.UPDATE_RULE = 'CASCADE' THEN 0"
Expand Down Expand Up @@ -1544,7 +1544,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,
if (!pk_db.empty())
{
query.append("'");
cnt = mysql_proxy->real_escape_string(tmpbuff, pk_db.c_str(), pk_db.length());
cnt = connection_proxy->real_escape_string(tmpbuff, pk_db.c_str(), pk_db.length());
query.append(tmpbuff, cnt);
query.append("' ");
}
Expand All @@ -1555,7 +1555,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,

query.append("AND A.REFERENCED_TABLE_NAME = '");

cnt =mysql_proxy->real_escape_string(tmpbuff, (char *)pk_table, pk_table_len);
cnt =connection_proxy->real_escape_string(tmpbuff, (char *)pk_table, pk_table_len);
query.append(tmpbuff, cnt);
query.append("' ");

Expand All @@ -1569,7 +1569,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,
if (!fk_db.empty())
{
query.append("'");
cnt = mysql_proxy->real_escape_string(tmpbuff, fk_db.c_str(), fk_db.length());
cnt = connection_proxy->real_escape_string(tmpbuff, fk_db.c_str(), fk_db.length());
query.append(tmpbuff, cnt);
query.append("' ");
}
Expand All @@ -1580,7 +1580,7 @@ SQLRETURN foreign_keys_i_s(SQLHSTMT hstmt,

query.append("AND A.TABLE_NAME = '");

cnt = mysql_proxy->real_escape_string(tmpbuff, (char *)fk_table, fk_table_len);
cnt = connection_proxy->real_escape_string(tmpbuff, (char *)fk_table, fk_table_len);
query.append(tmpbuff, cnt);
query.append("' ");

Expand Down
Loading

0 comments on commit 201ebb8

Please sign in to comment.