network_socket *network_socket_new() { network_socket *s; s = g_new0(network_socket, 1); s->send_queue = network_queue_new(); s->recv_queue = network_queue_new(); s->recv_queue_raw = network_queue_new(); s->default_db = g_string_new(NULL); s->charset = g_string_new(NULL); s->charset_client = g_string_new(NULL); s->charset_connection = g_string_new(NULL); s->charset_results = g_string_new(NULL); s->sql_mode = g_string_new(NULL); s->fd = -1; s->socket_type = SOCK_STREAM; /* let's default to TCP */ s->packet_id_is_reset = TRUE; s->src = network_address_new(); s->dst = network_address_new(); s->last_visit_time = time(0); return s; }
void t_resultset_fields_parse_high(void) { strings packets[] = { { C("\1\0\0\1\2") }, /* 2 fields */ { C("6\0\0\2\3def\0\6STATUS\0\rVariable_name\rVariable_name\f\10\0P\0\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { C("\23\0\0\5\17Aborted_clients\00298") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { NULL, 0 } }; int i; network_queue *q; GPtrArray *fields; q = network_queue_new(); for (i = 0; packets[i].s; i++) { network_queue_append(q, g_string_new_len(packets[i].s, packets[i].s_len)); } fields = g_ptr_array_new(); g_assert(NULL == network_mysqld_proto_get_fielddefs(q->chunks->head, fields)); network_queue_free(q); }
/** * test that we can decode a 4.1 resultset header */ void t_resultset_fields_works(void) { strings packets[] = { { C("\1\0\0\1\2") }, /* 2 fields */ { C("6\0\0\2\3def\0\6STATUS\0\rVariable_name\rVariable_name\f\10\0P\0\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { C("\23\0\0\5\17Aborted_clients\00298") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { NULL, 0 } }; int i; network_queue *q; GPtrArray *fields; network_mysqld_proto_fielddef_t *coldef; q = network_queue_new(); for (i = 0; packets[i].s; i++) { network_queue_append(q, g_string_new_len(packets[i].s, packets[i].s_len)); } fields = g_ptr_array_new(); g_assert(NULL != network_mysqld_proto_get_fielddefs(q->chunks->head, fields)); g_assert_cmpint(fields->len, ==, 2); coldef = g_ptr_array_index(fields, 0); g_assert_cmpstr(coldef->catalog, ==, "def"); g_assert_cmpstr(coldef->db, ==, NULL); g_assert_cmpstr(coldef->table, ==, "STATUS"); g_assert_cmpstr(coldef->org_table, ==, NULL); g_assert_cmpstr(coldef->name, ==, "Variable_name"); g_assert_cmpstr(coldef->org_name, ==, "Variable_name"); g_assert_cmpint(coldef->charsetnr, ==, 0x08); g_assert_cmpint(coldef->length, ==, 80); g_assert_cmpint(coldef->type, ==, 0xfd); g_assert_cmpint(coldef->flags, ==, 0x01); g_assert_cmpint(coldef->decimals, ==, 0x00); coldef = g_ptr_array_index(fields, 1); g_assert_cmpstr(coldef->catalog, ==, "def"); g_assert_cmpstr(coldef->db, ==, NULL); g_assert_cmpstr(coldef->table, ==, "STATUS"); g_assert_cmpstr(coldef->org_table, ==, NULL); g_assert_cmpstr(coldef->name, ==, "Value"); g_assert_cmpstr(coldef->org_name, ==, "Value"); g_assert_cmpint(coldef->charsetnr, ==, 0x08); g_assert_cmpint(coldef->length, ==, 512); g_assert_cmpint(coldef->type, ==, 0xfd); g_assert_cmpint(coldef->flags, ==, 0x01); g_assert_cmpint(coldef->decimals, ==, 0x00); network_mysqld_proto_fielddefs_free(fields); network_queue_free(q); }
network_queue *network_queue_init() { return network_queue_new(); }