Rename schemarouter structures

Renamed structures to remove confusion with readwritesplit structures.
This commit is contained in:
Markus Mäkelä
2017-03-17 14:08:03 +02:00
parent 0e9abda06f
commit 58130b5773
2 changed files with 79 additions and 81 deletions

View File

@ -75,7 +75,7 @@ static void handleError(MXS_ROUTER* instance,
DCB* backend_dcb,
mxs_error_action_t action,
bool* succp);
static backend_ref_t* get_bref_from_dcb(ROUTER_CLIENT_SES* rses, DCB* dcb);
static backend_ref_t* get_bref_from_dcb(SCHEMAROUTER_SESSION* rses, DCB* dcb);
static route_target_t get_shard_route_target(qc_query_type_t qtype,
bool trx_active,
@ -86,22 +86,22 @@ static uint64_t getCapabilities(MXS_ROUTER* instance);
static bool connect_backend_servers(backend_ref_t* backend_ref,
int router_nservers,
MXS_SESSION* session,
ROUTER_INSTANCE* router);
SCHEMAROUTER* router);
static bool get_shard_dcb(DCB** dcb,
ROUTER_CLIENT_SES* rses,
SCHEMAROUTER_SESSION* rses,
char* name);
static bool rses_begin_locked_router_action(ROUTER_CLIENT_SES* rses);
static void rses_end_locked_router_action(ROUTER_CLIENT_SES* rses);
static bool rses_begin_locked_router_action(SCHEMAROUTER_SESSION* rses);
static void rses_end_locked_router_action(SCHEMAROUTER_SESSION* rses);
static void mysql_sescmd_done(mysql_sescmd_t* sescmd);
static mysql_sescmd_t* mysql_sescmd_init(rses_property_t* rses_prop,
GWBUF* sescmd_buf,
unsigned char packet_type,
ROUTER_CLIENT_SES* rses);
SCHEMAROUTER_SESSION* rses);
static rses_property_t* mysql_sescmd_get_property(mysql_sescmd_t* scmd);
static rses_property_t* rses_property_init(rses_property_type_t prop_type);
static void rses_property_add(ROUTER_CLIENT_SES* rses,
static void rses_property_add(SCHEMAROUTER_SESSION* rses,
rses_property_t* prop);
static void rses_property_done(rses_property_t* prop);
static mysql_sescmd_t* rses_property_get_sescmd(rses_property_t* prop);
@ -116,43 +116,43 @@ static GWBUF* sescmd_cursor_clone_querybuf(sescmd_cursor_t* scur);
static mysql_sescmd_t* sescmd_cursor_get_command(sescmd_cursor_t* scur);
static bool sescmd_cursor_next(sescmd_cursor_t* scur);
static GWBUF* sescmd_cursor_process_replies(GWBUF* replybuf, backend_ref_t* bref);
static void tracelog_routed_query(ROUTER_CLIENT_SES* rses,
static void tracelog_routed_query(SCHEMAROUTER_SESSION* rses,
char* funcname,
backend_ref_t* bref,
GWBUF* buf);
static bool route_session_write(ROUTER_CLIENT_SES* router_client_ses,
static bool route_session_write(SCHEMAROUTER_SESSION* router_client_ses,
GWBUF* querybuf,
ROUTER_INSTANCE* inst,
SCHEMAROUTER* inst,
unsigned char packet_type,
qc_query_type_t qtype);
static void bref_clear_state(backend_ref_t* bref, bref_state_t state);
static void bref_set_state(backend_ref_t* bref, bref_state_t state);
static sescmd_cursor_t* backend_ref_get_sescmd_cursor (backend_ref_t* bref);
static int router_handle_state_switch(DCB* dcb, DCB_REASON reason, void* data);
static bool handle_error_new_connection(ROUTER_INSTANCE* inst,
ROUTER_CLIENT_SES* rses,
static bool handle_error_new_connection(SCHEMAROUTER* inst,
SCHEMAROUTER_SESSION* rses,
DCB* backend_dcb,
GWBUF* errmsg);
static void handle_error_reply_client(MXS_SESSION* ses,
ROUTER_CLIENT_SES* rses,
SCHEMAROUTER_SESSION* rses,
DCB* backend_dcb,
GWBUF* errmsg);
static SPINLOCK instlock;
static ROUTER_INSTANCE* instances;
static SCHEMAROUTER* instances;
bool detect_show_shards(GWBUF* query);
int process_show_shards(ROUTER_CLIENT_SES* rses);
int process_show_shards(SCHEMAROUTER_SESSION* rses);
static int hashkeyfun(const void* key);
static int hashcmpfun(const void *, const void *);
void write_error_to_client(DCB* dcb, int errnum, const char* mysqlstate, const char* errmsg);
int inspect_backend_mapping_states(ROUTER_CLIENT_SES *router_cli_ses,
int inspect_backend_mapping_states(SCHEMAROUTER_SESSION *router_cli_ses,
backend_ref_t *bref,
GWBUF** wbuf);
bool handle_default_db(ROUTER_CLIENT_SES *router_cli_ses);
void route_queued_query(ROUTER_CLIENT_SES *router_cli_ses);
void synchronize_shard_map(ROUTER_CLIENT_SES *client);
bool handle_default_db(SCHEMAROUTER_SESSION *router_cli_ses);
void route_queued_query(SCHEMAROUTER_SESSION *router_cli_ses);
void synchronize_shard_map(SCHEMAROUTER_SESSION *client);
static int hashkeyfun(const void* key)
{
@ -279,7 +279,7 @@ char* get_lenenc_str(void* data)
* @return 1 if a complete response was received, 0 if a partial response was received
* and -1 if a database was found on more than one server.
*/
showdb_response_t parse_showdb_response(ROUTER_CLIENT_SES* rses, backend_ref_t* bref, GWBUF** buffer)
showdb_response_t parse_showdb_response(SCHEMAROUTER_SESSION* rses, backend_ref_t* bref, GWBUF** buffer)
{
unsigned char* ptr;
char* target = bref->bref_backend->server->unique_name;
@ -400,7 +400,7 @@ showdb_response_t parse_showdb_response(ROUTER_CLIENT_SES* rses, backend_ref_t*
* @param session Router client session
* @return 1 if all writes to backends were succesful and 0 if one or more errors occurred
*/
int gen_databaselist(ROUTER_INSTANCE* inst, ROUTER_CLIENT_SES* session)
int gen_databaselist(SCHEMAROUTER* inst, SCHEMAROUTER_SESSION* session)
{
DCB* dcb;
const char* query = "SHOW DATABASES";
@ -451,8 +451,8 @@ int gen_databaselist(ROUTER_INSTANCE* inst, ROUTER_CLIENT_SES* session)
* @param buffer Query to inspect
* @return Name of the backend or NULL if the query contains no known databases.
*/
char* get_shard_target_name(ROUTER_INSTANCE* router,
ROUTER_CLIENT_SES* client,
char* get_shard_target_name(SCHEMAROUTER* router,
SCHEMAROUTER_SESSION* client,
GWBUF* buffer,
qc_query_type_t qtype)
{
@ -571,7 +571,7 @@ char* get_shard_target_name(ROUTER_INSTANCE* router,
* @param shard Shard to check
* @return True if the backend server is running
*/
bool check_shard_status(ROUTER_INSTANCE* router, char* shard)
bool check_shard_status(SCHEMAROUTER* router, char* shard)
{
for (SERVER_REF *ref = router->service->dbref; ref; ref = ref->next)
{
@ -651,11 +651,11 @@ MXS_MODULE* MXS_CREATE_MODULE()
*/
static MXS_ROUTER* createInstance(SERVICE *service, char **options)
{
ROUTER_INSTANCE* router;
SCHEMAROUTER* router;
MXS_CONFIG_PARAMETER* conf;
MXS_CONFIG_PARAMETER* param;
if ((router = MXS_CALLOC(1, sizeof(ROUTER_INSTANCE))) == NULL)
if ((router = MXS_CALLOC(1, sizeof(SCHEMAROUTER))) == NULL)
{
return NULL;
}
@ -824,7 +824,7 @@ static MXS_ROUTER* createInstance(SERVICE *service, char **options)
* @param map Shard map to update
* @return Current state of the shard map
*/
enum shard_map_state shard_map_update_state(shard_map_t *self, ROUTER_INSTANCE* router)
enum shard_map_state shard_map_update_state(shard_map_t *self, SCHEMAROUTER* router)
{
spinlock_acquire(&self->lock);
double tdiff = difftime(time(NULL), self->last_updated);
@ -850,8 +850,8 @@ enum shard_map_state shard_map_update_state(shard_map_t *self, ROUTER_INSTANCE*
static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* router_inst, MXS_SESSION* session)
{
backend_ref_t* backend_ref; /*< array of backend references (DCB, BACKEND, cursor) */
ROUTER_CLIENT_SES* client_rses = NULL;
ROUTER_INSTANCE* router = (ROUTER_INSTANCE *)router_inst;
SCHEMAROUTER_SESSION* client_rses = NULL;
SCHEMAROUTER* router = (SCHEMAROUTER *)router_inst;
bool succp;
int router_nservers = 0; /*< # of servers in total */
char db[MYSQL_DATABASE_MAXLEN + 1] = "";
@ -878,7 +878,7 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* router_inst, MXS_SESSION* sess
MXS_INFO("Client'%s' connecting with empty database.", data->user);
}
client_rses = (ROUTER_CLIENT_SES *)MXS_CALLOC(1, sizeof(ROUTER_CLIENT_SES));
client_rses = (SCHEMAROUTER_SESSION *)MXS_CALLOC(1, sizeof(SCHEMAROUTER_SESSION));
if (client_rses == NULL)
{
@ -1042,8 +1042,8 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* router_inst, MXS_SESSION* sess
*/
static void closeSession(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_session)
{
ROUTER_CLIENT_SES* router_cli_ses;
ROUTER_INSTANCE* inst;
SCHEMAROUTER_SESSION* router_cli_ses;
SCHEMAROUTER* inst;
backend_ref_t* backend_ref;
MXS_DEBUG("%lu [schemarouter:closeSession]", pthread_self());
@ -1056,7 +1056,7 @@ static void closeSession(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_sessio
{
return;
}
router_cli_ses = (ROUTER_CLIENT_SES *)router_session;
router_cli_ses = (SCHEMAROUTER_SESSION *)router_session;
CHK_CLIENT_RSES(router_cli_ses);
inst = router_cli_ses->router;
@ -1137,7 +1137,7 @@ static void closeSession(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_sessio
static void freeSession(MXS_ROUTER* router_instance, MXS_ROUTER_SESSION* router_client_session)
{
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES *)router_client_session;
SCHEMAROUTER_SESSION* router_cli_ses = (SCHEMAROUTER_SESSION *)router_client_session;
for (int i = 0; i < router_cli_ses->rses_nbackends; i++)
{
@ -1186,7 +1186,7 @@ static void freeSession(MXS_ROUTER* router_instance, MXS_ROUTER_SESSION* router_
* @return True if proper DCB was found, false otherwise.
*/
static bool get_shard_dcb(DCB** p_dcb,
ROUTER_CLIENT_SES* rses,
SCHEMAROUTER_SESSION* rses,
char* name)
{
backend_ref_t* backend_ref;
@ -1285,7 +1285,7 @@ void check_drop_tmp_table(MXS_ROUTER* instance,
char** tbl = NULL;
char *hkey, *dbname;
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES *)router_session;
SCHEMAROUTER_SESSION* router_cli_ses = (SCHEMAROUTER_SESSION *)router_session;
rses_property_t* rses_prop_tmp;
rses_prop_tmp = router_cli_ses->rses_properties[RSES_PROP_TYPE_TMPTABLES];
@ -1341,7 +1341,7 @@ qc_query_type_t is_read_tmp_table(MXS_ROUTER* instance,
char** tbl = NULL;
char *hkey, *dbname;
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES *)router_session;
SCHEMAROUTER_SESSION* router_cli_ses = (SCHEMAROUTER_SESSION *)router_session;
qc_query_type_t qtype = type;
rses_property_t* rses_prop_tmp;
@ -1415,7 +1415,7 @@ void check_create_tmp_table(MXS_ROUTER* instance,
int klen = 0;
char *hkey, *dbname;
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES *)router_session;
SCHEMAROUTER_SESSION* router_cli_ses = (SCHEMAROUTER_SESSION *)router_session;
rses_property_t* rses_prop_tmp;
HASHTABLE* h;
@ -1546,7 +1546,7 @@ RESULT_ROW *result_set_cb(struct resultset * rset, void *data)
* @param client Router client session
* @return True if the sending of the database list was successful, otherwise false
*/
bool send_database_list(ROUTER_INSTANCE* router, ROUTER_CLIENT_SES* client)
bool send_database_list(SCHEMAROUTER* router, SCHEMAROUTER_SESSION* client)
{
bool rval = false;
spinlock_acquire(&client->shardmap->lock);
@ -1611,17 +1611,15 @@ bool send_database_list(ROUTER_INSTANCE* router, ROUTER_CLIENT_SES* client)
* an error message is sent to the client.
*
*/
static int routeQuery(MXS_ROUTER* instance,
MXS_ROUTER_SESSION* router_session,
GWBUF* qbuf)
static int routeQuery(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_session, GWBUF* qbuf)
{
qc_query_type_t qtype = QUERY_TYPE_UNKNOWN;
mysql_server_cmd_t packet_type;
uint8_t* packet;
int i, ret = 0;
int ret = 0;
DCB* target_dcb = NULL;
ROUTER_INSTANCE* inst = (ROUTER_INSTANCE *)instance;
ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES *)router_session;
SCHEMAROUTER* inst = (SCHEMAROUTER *)instance;
SCHEMAROUTER_SESSION* router_cli_ses = (SCHEMAROUTER_SESSION *)router_session;
bool rses_is_closed = false;
bool change_successful = false;
route_target_t route_target = TARGET_UNDEFINED;
@ -2126,7 +2124,7 @@ retblock:
*
*/
static bool rses_begin_locked_router_action(
ROUTER_CLIENT_SES* rses)
SCHEMAROUTER_SESSION* rses)
{
bool succp = false;
@ -2162,7 +2160,7 @@ return_succp:
* @details (write detailed description here)
*
*/
static void rses_end_locked_router_action(ROUTER_CLIENT_SES* rses)
static void rses_end_locked_router_action(SCHEMAROUTER_SESSION* rses)
{
CHK_CLIENT_RSES(rses);
spinlock_release(&rses->rses_lock);
@ -2178,7 +2176,7 @@ static void rses_end_locked_router_action(ROUTER_CLIENT_SES* rses)
*/
static void diagnostic(MXS_ROUTER *instance, DCB *dcb)
{
ROUTER_INSTANCE *router = (ROUTER_INSTANCE *)instance;
SCHEMAROUTER *router = (SCHEMAROUTER *)instance;
int i = 0;
double sescmd_pct = router->stats.n_sescmd != 0 ?
@ -2243,12 +2241,12 @@ static void clientReply(MXS_ROUTER* instance,
DCB* backend_dcb)
{
DCB* client_dcb;
ROUTER_CLIENT_SES* router_cli_ses;
SCHEMAROUTER_SESSION* router_cli_ses;
sescmd_cursor_t* scur = NULL;
backend_ref_t* bref;
GWBUF* writebuf = buffer;
router_cli_ses = (ROUTER_CLIENT_SES *) router_session;
router_cli_ses = (SCHEMAROUTER_SESSION *) router_session;
CHK_CLIENT_RSES(router_cli_ses);
/**
@ -2497,7 +2495,7 @@ static void clientReply(MXS_ROUTER* instance,
if ((ret = bref->bref_dcb->func.write(bref->bref_dcb,
gwbuf_clone(bref->bref_pending_cmd))) == 1)
{
ROUTER_INSTANCE* inst = (ROUTER_INSTANCE *) instance;
SCHEMAROUTER* inst = (SCHEMAROUTER *) instance;
atomic_add(&inst->stats.n_queries, 1);
/**
* Add one query response waiter to backend reference
@ -2675,7 +2673,7 @@ static void bref_set_state(backend_ref_t* bref, bref_state_t state)
static bool connect_backend_servers(backend_ref_t* backend_ref,
int router_nservers,
MXS_SESSION* session,
ROUTER_INSTANCE* router)
SCHEMAROUTER* router)
{
bool succp = true;
/*
@ -2888,7 +2886,7 @@ static void rses_property_done(rses_property_t* prop)
*
* Router client session must be locked.
*/
static void rses_property_add(ROUTER_CLIENT_SES* rses,
static void rses_property_add(SCHEMAROUTER_SESSION* rses,
rses_property_t* prop)
{
rses_property_t* p;
@ -2941,7 +2939,7 @@ static mysql_sescmd_t* rses_property_get_sescmd(rses_property_t* prop)
static mysql_sescmd_t* mysql_sescmd_init(rses_property_t* rses_prop,
GWBUF* sescmd_buf,
unsigned char packet_type,
ROUTER_CLIENT_SES* rses)
SCHEMAROUTER_SESSION* rses)
{
mysql_sescmd_t* sescmd;
@ -3123,7 +3121,7 @@ static bool sescmd_cursor_history_empty(sescmd_cursor_t* scur)
static void sescmd_cursor_reset(sescmd_cursor_t* scur)
{
ROUTER_CLIENT_SES* rses;
SCHEMAROUTER_SESSION* rses;
CHK_SESCMD_CUR(scur);
CHK_CLIENT_RSES(scur->scmd_cur_rses);
rses = scur->scmd_cur_rses;
@ -3334,9 +3332,9 @@ static uint64_t getCapabilities(MXS_ROUTER* instance)
* Return true if succeed, false is returned if router session was closed or
* if execute_sescmd_in_backend failed.
*/
static bool route_session_write(ROUTER_CLIENT_SES* router_cli_ses,
static bool route_session_write(SCHEMAROUTER_SESSION* router_cli_ses,
GWBUF* querybuf,
ROUTER_INSTANCE* inst,
SCHEMAROUTER* inst,
unsigned char packet_type,
qc_query_type_t qtype)
{
@ -3561,8 +3559,8 @@ static void handleError(MXS_ROUTER* instance,
{
ss_dassert(problem_dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER);
MXS_SESSION* session;
ROUTER_INSTANCE* inst = (ROUTER_INSTANCE *)instance;
ROUTER_CLIENT_SES* rses = (ROUTER_CLIENT_SES *)router_session;
SCHEMAROUTER* inst = (SCHEMAROUTER *)instance;
SCHEMAROUTER_SESSION* rses = (SCHEMAROUTER_SESSION *)router_session;
CHK_DCB(problem_dcb);
@ -3618,7 +3616,7 @@ static void handleError(MXS_ROUTER* instance,
static void handle_error_reply_client(MXS_SESSION* ses,
ROUTER_CLIENT_SES* rses,
SCHEMAROUTER_SESSION* rses,
DCB* backend_dcb,
GWBUF* errmsg)
{
@ -3652,7 +3650,7 @@ static void handle_error_reply_client(MXS_SESSION* ses,
* @return True if session has a single backend server in use that is running.
* False if no backends are in use or running.
*/
bool have_servers(ROUTER_CLIENT_SES* rses)
bool have_servers(SCHEMAROUTER_SESSION* rses)
{
int i;
@ -3681,8 +3679,8 @@ bool have_servers(ROUTER_CLIENT_SES* rses)
*
* @return true if there are enough backend connections to continue, false if not
*/
static bool handle_error_new_connection(ROUTER_INSTANCE* inst,
ROUTER_CLIENT_SES* rses,
static bool handle_error_new_connection(SCHEMAROUTER* inst,
SCHEMAROUTER_SESSION* rses,
DCB* backend_dcb,
GWBUF* errmsg)
{
@ -3762,7 +3760,7 @@ return_succp:
*
* @return backend reference pointer if succeed or NULL
*/
static backend_ref_t* get_bref_from_dcb(ROUTER_CLIENT_SES* rses,
static backend_ref_t* get_bref_from_dcb(SCHEMAROUTER_SESSION* rses,
DCB* dcb)
{
backend_ref_t* bref;
@ -3844,7 +3842,7 @@ bool detect_show_shards(GWBUF* query)
struct shard_list
{
HASHITERATOR* iter;
ROUTER_CLIENT_SES* rses;
SCHEMAROUTER_SESSION* rses;
RESULTSET* rset;
};
@ -3874,7 +3872,7 @@ RESULT_ROW* shard_list_cb(struct resultset* rset, void* data)
* @param rses Router client session
* @return 0 on success, -1 on error
*/
int process_show_shards(ROUTER_CLIENT_SES* rses)
int process_show_shards(SCHEMAROUTER_SESSION* rses)
{
int rval = 0;
@ -3940,7 +3938,7 @@ void write_error_to_client(DCB* dcb, int errnum, const char* mysqlstate, const c
* @param router_cli_ses
* @return
*/
bool handle_default_db(ROUTER_CLIENT_SES *router_cli_ses)
bool handle_default_db(SCHEMAROUTER_SESSION *router_cli_ses)
{
bool rval = false;
char* target = NULL;
@ -4009,7 +4007,7 @@ bool handle_default_db(ROUTER_CLIENT_SES *router_cli_ses)
return rval;
}
void route_queued_query(ROUTER_CLIENT_SES *router_cli_ses)
void route_queued_query(SCHEMAROUTER_SESSION *router_cli_ses)
{
GWBUF* tmp = router_cli_ses->queue;
router_cli_ses->queue = router_cli_ses->queue->next;
@ -4029,7 +4027,7 @@ void route_queued_query(ROUTER_CLIENT_SES *router_cli_ses)
* @param router_cli_ses Router client session
* @return 1 if mapping is done, 0 if it is still ongoing and -1 on error
*/
int inspect_backend_mapping_states(ROUTER_CLIENT_SES *router_cli_ses,
int inspect_backend_mapping_states(SCHEMAROUTER_SESSION *router_cli_ses,
backend_ref_t *bref,
GWBUF** wbuf)
{
@ -4151,7 +4149,7 @@ void replace_shard_map(shard_map_t **target, shard_map_t **source)
* is discarded and the router's shard map is used.
* @param client Router session
*/
void synchronize_shard_map(ROUTER_CLIENT_SES *client)
void synchronize_shard_map(SCHEMAROUTER_SESSION *client)
{
spinlock_acquire(&client->router->lock);

View File

@ -110,7 +110,7 @@ typedef enum backend_type_t
BE_COUNT
} backend_type_t;
struct router_instance;
struct schemarouter_instance;
/**
* Route target types
@ -132,7 +132,7 @@ typedef enum
#define TARGET_IS_ANY(t) (t & TARGET_ANY)
typedef struct rses_property_st rses_property_t;
typedef struct router_client_session ROUTER_CLIENT_SES;
typedef struct schemarouter_session SCHEMAROUTER_SESSION;
/**
* Router session properties
@ -189,7 +189,7 @@ struct rses_property_st
#if defined(SS_DEBUG)
skygw_chk_t rses_prop_chk_top;
#endif
ROUTER_CLIENT_SES* rses_prop_rsession; /*< Parent router session */
SCHEMAROUTER_SESSION* rses_prop_rsession; /*< Parent router session */
int rses_prop_refcount; /*< Reference count*/
rses_property_type_t rses_prop_type; /*< Property type */
union rses_prop_data
@ -208,7 +208,7 @@ typedef struct sescmd_cursor_st
#if defined(SS_DEBUG)
skygw_chk_t scmd_cur_chk_top;
#endif
ROUTER_CLIENT_SES* scmd_cur_rses; /*< pointer to owning router session */
SCHEMAROUTER_SESSION* scmd_cur_rses; /*< pointer to owning router session */
rses_property_t** scmd_cur_ptr_property; /*< address of pointer to owner property */
mysql_sescmd_t* scmd_cur_cmd; /*< pointer to current session command */
bool scmd_cur_active; /*< true if command is being executed */
@ -313,7 +313,7 @@ typedef struct
/**
* The client session structure used within this router.
*/
struct router_client_session
struct schemarouter_session
{
#if defined(SS_DEBUG)
skygw_chk_t rses_chk_top;
@ -331,8 +331,8 @@ struct router_client_session
int rses_nbackends; /*< Number of backends */
bool rses_autocommit_enabled; /*< Is autocommit enabled */
bool rses_transaction_active; /*< Is a transaction active */
struct router_instance *router; /*< The router instance */
struct router_client_session* next; /*< List of router sessions */
struct schemarouter_instance *router; /*< The router instance */
struct schemarouter_session* next; /*< List of router sessions */
shard_map_t*
shardmap; /*< Database hash containing names of the databases mapped to the servers that contain them */
char connect_db[MYSQL_DATABASE_MAXLEN + 1]; /*< Database the user was trying to connect to */
@ -353,18 +353,18 @@ struct router_client_session
/**
* The per instance data for the router.
*/
typedef struct router_instance
typedef struct schemarouter_instance
{
HASHTABLE* shard_maps; /*< Shard maps hashed by user name */
SERVICE* service; /*< Pointer to service */
ROUTER_CLIENT_SES* connections; /*< List of client connections */
SCHEMAROUTER_SESSION* connections; /*< List of client connections */
SPINLOCK lock; /*< Lock for the instance data */
schemarouter_config_t schemarouter_config; /*< expanded config info from SERVICE */
int schemarouter_version;/*< version number for router's config */
unsigned int bitmask; /*< Bitmask to apply to server->status */
unsigned int bitvalue; /*< Required value of server->status */
ROUTER_STATS stats; /*< Statistics for this router */
struct router_instance* next; /*< Next router on the list */
struct schemarouter_instance* next; /*< Next router on the list */
bool available_slaves; /*< The router has some slaves available */
HASHTABLE* ignored_dbs; /*< List of databases to ignore when the
* database mapping finds multiple servers
@ -374,7 +374,7 @@ typedef struct router_instance
* if they are found on more than one server. */
pcre2_match_data* ignore_match_data;
} ROUTER_INSTANCE;
} SCHEMAROUTER;
#define BACKEND_TYPE(b) (SERVER_IS_MASTER((b)->backend_server) ? BE_MASTER : \
(SERVER_IS_SLAVE((b)->backend_server) ? BE_SLAVE : BE_UNDEFINED));