MXS-852: Add PS manager class
The class manages both text and binary protocol prepared statement ID to type mapping. The text protocol statements are mapped by their plaintext name and the binary protocol statements are mapped by the session command ID of the prepared statement. By mapping the binary protocol prepared statement type to the session command identifier, we can store the types for both styles of prepared statements in a very similar manner. When the prepared statement handle is received from the backend and is sent to the client, the client handle to session command ID mapping can be done. This allows the mapping of both client and backend PS handles to internal session command IDs.
This commit is contained in:
@ -207,15 +207,6 @@ bool handle_target_is_all(route_target_t route_target, ROUTER_INSTANCE *inst,
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (qc_query_is_type(qtype, QUERY_TYPE_PREPARE_NAMED_STMT))
|
||||
{
|
||||
store_text_ps(rses, extract_text_ps_id(querybuf), querybuf);
|
||||
}
|
||||
else if (qc_query_is_type(qtype, QUERY_TYPE_PREPARE_STMT))
|
||||
{
|
||||
gwbuf_set_type(querybuf, GWBUF_TYPE_COLLECT_RESULT);
|
||||
}
|
||||
|
||||
if (TARGET_IS_MASTER(route_target) || TARGET_IS_SLAVE(route_target))
|
||||
{
|
||||
/**
|
||||
@ -243,7 +234,7 @@ bool handle_target_is_all(route_target_t route_target, ROUTER_INSTANCE *inst,
|
||||
MXS_FREE(query_str);
|
||||
MXS_FREE(qtype_str);
|
||||
}
|
||||
else if (route_session_write(rses, gwbuf_clone(querybuf), packet_type))
|
||||
else if (route_session_write(rses, gwbuf_clone(querybuf), packet_type, qtype))
|
||||
{
|
||||
|
||||
result = true;
|
||||
|
Reference in New Issue
Block a user