/* * Start query */ void pool_start_query(POOL_QUERY_CONTEXT *query_context, char *query, int len, Node *node) { POOL_SESSION_CONTEXT *session_context; if (query_context) { session_context = pool_get_session_context(); query_context->original_length = len; query_context->rewritten_length = -1; query_context->original_query = pstrdup(query); query_context->rewritten_query = NULL; query_context->parse_tree = node; query_context->virtual_master_node_id = my_master_node_id; query_context->is_cache_safe = false; if (pool_config->memory_cache_enabled) query_context->temp_cache = pool_create_temp_query_cache(query); query_context->is_reflected = false; query_context->replication_cursor = true; query_context->loadbalance_cursor = false; query_context->is_loadbalance = true; memset(query_context->cursor_name, 0, sizeof(query_context->cursor_name)); pool_set_query_in_progress(); session_context->query_context = query_context; } }
/* * Destroy sent message */ void pool_sent_message_destroy(POOL_SENT_MESSAGE *message) { bool in_progress; POOL_QUERY_CONTEXT *qc = NULL; if (!session_context) { pool_error("pool_sent_message_destroy: session context is not initialized"); return; } in_progress = pool_is_query_in_progress(); if (message) { if (message->contents) pool_memory_free(session_context->memory_context, message->contents); if (message->name) pool_memory_free(session_context->memory_context, message->name); if (message->query_context) { if (session_context->query_context != message->query_context) qc = session_context->query_context; if (can_query_context_destroy(message->query_context)) { pool_query_context_destroy(message->query_context); /* * set in_progress flag, because pool_query_context_destroy() * unsets in_progress flag */ if (in_progress) pool_set_query_in_progress(); /* * set query_context of session_context, because * pool_query_context_destroy() sets it to NULL. */ if (qc) session_context->query_context = qc; } } if (session_context->memory_context) pool_memory_free(session_context->memory_context, message); } }