cache: Pick out default db when connecting with database
This commit is contained in:
20
server/modules/filter/cache/cache.c
vendored
20
server/modules/filter/cache/cache.c
vendored
@ -581,12 +581,32 @@ static CACHE_SESSION_DATA *cache_session_data_create(CACHE_INSTANCE *instance,
|
|||||||
CACHE_SESSION_DATA *data = (CACHE_SESSION_DATA*)MXS_CALLOC(1, sizeof(CACHE_SESSION_DATA));
|
CACHE_SESSION_DATA *data = (CACHE_SESSION_DATA*)MXS_CALLOC(1, sizeof(CACHE_SESSION_DATA));
|
||||||
|
|
||||||
if (data)
|
if (data)
|
||||||
|
{
|
||||||
|
char *default_db = NULL;
|
||||||
|
|
||||||
|
ss_dassert(session->client_dcb);
|
||||||
|
ss_dassert(session->client_dcb->data);
|
||||||
|
MYSQL_session *mysql_session = (MYSQL_session*)session->client_dcb->data;
|
||||||
|
|
||||||
|
if (mysql_session->db[0] != 0)
|
||||||
|
{
|
||||||
|
default_db = MXS_STRDUP(mysql_session->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((mysql_session->db[0] == 0) || default_db)
|
||||||
{
|
{
|
||||||
data->instance = instance;
|
data->instance = instance;
|
||||||
data->api = instance->module->api;
|
data->api = instance->module->api;
|
||||||
data->storage = instance->storage;
|
data->storage = instance->storage;
|
||||||
data->session = session;
|
data->session = session;
|
||||||
data->state = CACHE_EXPECTING_NOTHING;
|
data->state = CACHE_EXPECTING_NOTHING;
|
||||||
|
data->default_db = default_db;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MXS_FREE(data);
|
||||||
|
data = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
Reference in New Issue
Block a user