示例#1
0
void pool_session_add_cursor_info(const char *name, const char *footer, bool replication_type)
{
	if(session_context == NULL) return;
	pool_debug("pool_session_add_cursor_info(): name: %s, footer: %s, table_type: %d", name, footer, replication_type);

	int i = 0;
	for(; i < POOL_SESSION_MAX_OPENED_CURSORS; ++i)
	{
		if(session_context->cursors_info[i].cursor_name == NULL)
		{
			session_context->cursors_info[i].cursor_name = pool_memory_strdup(session_context->memory_context, name);
			session_context->cursors_info[i].footer_info = pool_memory_strdup(session_context->memory_context, footer);
			session_context->cursors_info[i].table_type = replication_type;
			break;
		}
	}
}
/*
 * Create a sent message
 * kind: one of 'P':Parse, 'B':Bind or'Q':Query(PREPARE)
 * len: message length that is not network byte order
 * contents: message contents
 * num_tsparams: number of timestamp parameters
 * name: prepared statement name or portal name
 */
POOL_SENT_MESSAGE *pool_create_sent_message(char kind, int len, char *contents,
											int num_tsparams, const char *name,
											POOL_QUERY_CONTEXT *query_context)
{
	POOL_SENT_MESSAGE *msg;

	if (!session_context)
	{
		pool_error("pool_create_sent_message: session context is not initialized");
		return NULL;
	}

	msg = pool_memory_alloc(session_context->memory_context,
							sizeof(POOL_SENT_MESSAGE));
	msg->kind = kind;
	msg->len = len;
	msg->contents = pool_memory_alloc(session_context->memory_context, len);
	memcpy(msg->contents, contents, len);
	msg->num_tsparams = num_tsparams;
	msg->name = pool_memory_strdup(session_context->memory_context, name);
	msg->query_context = query_context;

	return msg;
}