@@ -53,13 +53,16 @@ CometQLProxy_connection::~CometQLProxy_connection()
53
53
54
54
int CometQLProxy_connection::proxy_query (int node, thread_data* local_buf, unsigned int PacketNomber)
55
55
{
56
+ std::string query (" cometqlcluster_v1; " );
57
+ query.append (local_buf->qInfo .StartQury );
58
+
56
59
if (local_buf->qInfo .command == TOK_SELECT || local_buf->qInfo .command == TOK_SHOW)
57
60
{
58
- return proxy_union_select (node, local_buf-> qInfo . StartQury , local_buf, PacketNomber);
61
+ return proxy_union_select (node, query. data () , local_buf, PacketNomber);
59
62
}
60
63
else if (local_buf->qInfo .command == TOK_INSERT || local_buf->qInfo .command == TOK_DELETE)
61
64
{
62
- return proxy_insert (node, local_buf-> qInfo . StartQury , local_buf, PacketNomber);
65
+ return proxy_insert (node, query. data () , local_buf, PacketNomber);
63
66
}
64
67
}
65
68
@@ -96,8 +99,8 @@ int CometQLProxy_connection::proxy_union_select(int node, const char* query, thr
96
99
{
97
100
// @todo Проверять код ошибки и не паниковать если по коду ясно что проблема в самом запросе а не соединении.
98
101
// @todo Проверять что если ошибка сетевая или что то ещё то повторять попытку.
99
- TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy warn [6] on node=%s in query=%s\n " , link ->name (), query );
100
-
102
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error [6] on node=%d in query=%s (errno=%d, error=%s) \n " , node, query, mysql_errno ( link ->getLink ()), mysql_error ( link -> getLink ()) );
103
+
101
104
bool isSuccess = false ;
102
105
// Если ошибка то ещё раз отправим запрос но на другую ноду
103
106
auto it = local_buf->proxyCluster .begin ();
@@ -134,14 +137,14 @@ int CometQLProxy_connection::proxy_union_select(int node, const char* query, thr
134
137
}
135
138
else
136
139
{
137
- TagLoger::log (Log_CometQLCluster, 0 , " CometQLProxy query:`%s` send to node=%d from %d\n " , query, node, local_buf->proxyCluster .size ());
140
+ TagLoger::log (Log_CometQLCluster, 0 , " CometQLProxy query:`%s` send to node=%d from %d (errno=%d, error=%s) \n " , query, node, local_buf->proxyCluster .size (), mysql_errno ( link -> getLink ()), mysql_error ( link -> getLink () ));
138
141
// Если задана node то выполнить запрос на конкретной ноде а не на всех нодах.
139
142
link = local_buf->proxyCluster [node];
140
143
if (!link ->query (query))
141
144
{
142
145
// @todo Проверять код ошибки и не паниковать если по коду ясно что проблема в самом запросе а не соединении.
143
146
// @todo Проверять что если ошибка сетевая или что то ещё то повторять попытку.
144
- TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[6] on node=%d in query=%s\n " , node, query);
147
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[6] on node=%d in query=%s (errno=%d, error=%s) \n " , node, query, mysql_errno ( link -> getLink ()), mysql_error ( link -> getLink ()) );
145
148
local_buf->qInfo .setError (mysql_error (link ->getLink ()), mysql_errno (link ->getLink ()));
146
149
local_buf->answer_buf .unlock ();
147
150
Send_Err_Package (local_buf->qInfo .errorCode , local_buf->qInfo .errorText , ++PacketNomber, local_buf, this );
@@ -150,11 +153,19 @@ int CometQLProxy_connection::proxy_union_select(int node, const char* query, thr
150
153
}
151
154
152
155
auto result = mysql_store_result (link ->getLink ());
156
+ if (result == NULL )
157
+ {
158
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[12] on node=%d in query=%s (errno=%d, error=%s)\n " , node, query, mysql_errno (link ->getLink ()), mysql_error (link ->getLink ()));
159
+ local_buf->qInfo .setError (mysql_error (link ->getLink ()), mysql_errno (link ->getLink ()));
160
+ local_buf->answer_buf .unlock ();
161
+ Send_Err_Package (local_buf->qInfo .errorCode , local_buf->qInfo .errorText , ++PacketNomber, local_buf, this );
162
+ return 0 ;
163
+ }
153
164
154
165
MYSQL_FIELD *field;
155
166
while ((field = mysql_fetch_field (result)))
156
167
{
157
- printf (" field name %s\n " , field->name );
168
+ // printf("field name %s\n", field->name);
158
169
local_buf->sql .columns [num_fields] = field->name ;
159
170
num_fields++;
160
171
if (num_fields >= MAX_COLUMNS_COUNT)
@@ -199,13 +210,21 @@ int CometQLProxy_connection::proxy_union_select(int node, const char* query, thr
199
210
200
211
isSuccess = true ;
201
212
auto result = mysql_store_result (link ->getLink ());
213
+ if (result == NULL )
214
+ {
215
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[13] on node=%d in query=%s (errno=%d, error=%s)\n " , link ->name (), query, mysql_errno (link ->getLink ()), mysql_error (link ->getLink ()));
216
+ local_buf->qInfo .setError (mysql_error (link ->getLink ()), mysql_errno (link ->getLink ()));
217
+ local_buf->answer_buf .unlock ();
218
+ Send_Err_Package (local_buf->qInfo .errorCode , local_buf->qInfo .errorText , ++PacketNomber, local_buf, this );
219
+ return 0 ;
220
+ }
202
221
203
222
if (!isSendHeader)
204
223
{
205
224
MYSQL_FIELD *field;
206
225
while ((field = mysql_fetch_field (result)))
207
226
{
208
- printf (" field name %s\n " , field->name );
227
+ // printf("field name %s\n", field->name);
209
228
local_buf->sql .columns [num_fields] = field->name ;
210
229
num_fields++;
211
230
if (num_fields >= MAX_COLUMNS_COUNT)
@@ -222,10 +241,10 @@ int CometQLProxy_connection::proxy_union_select(int node, const char* query, thr
222
241
{
223
242
for (int i = 0 ; i < num_fields; i++)
224
243
{
225
- printf (" [%s]" , row[i] ? row[i] : " NULL" );
244
+ // printf("[%s]", row[i] ? row[i] : "NULL");
226
245
value[i] = row[i];
227
246
}
228
- printf (" \n " );
247
+ // printf("\n");
229
248
answer += RowPackage (num_fields, value, ++PacketNomber, answer);
230
249
}
231
250
mysql_free_result (result);
@@ -433,6 +452,14 @@ int CometQLProxy_connection::query_router(thread_data* local_buf, int PacketNomb
433
452
{
434
453
return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_select_from_pipes_settings(local_buf,PacketNomber);
435
454
}
455
+ else if (local_buf->qInfo .tokCompare (" conference" , local_buf->qInfo .tableName ))
456
+ {
457
+ return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
458
+ }
459
+ else if (local_buf->qInfo .tokCompare (" conference_members" , local_buf->qInfo .tableName ))
460
+ {
461
+ return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
462
+ }
436
463
else
437
464
{
438
465
return Send_Err_Package (SQL_ERR_NOT_EXIST, " Table doesn't exist" , PacketNomber+1 , local_buf, this );
@@ -481,8 +508,12 @@ int CometQLProxy_connection::query_router(thread_data* local_buf, int PacketNomb
481
508
}
482
509
else if (local_buf->qInfo .tokCompare (" conference" , local_buf->qInfo .tableName ))
483
510
{
484
- return proxy_query (PROXY_TO_ALL , local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
511
+ return proxy_query (PROXY_TO_RANDOM , local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
485
512
}
513
+ else if (local_buf->qInfo .tokCompare (" conference_members" , local_buf->qInfo .tableName ))
514
+ {
515
+ return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
516
+ }
486
517
else if (local_buf->qInfo .tokCompare (" dialogs" , local_buf->qInfo .tableName ))
487
518
{
488
519
return proxy_query (PROXY_TO_ALL, local_buf,PacketNomber); // return sql_insert_into_dialogs(local_buf,PacketNomber);
@@ -528,6 +559,14 @@ int CometQLProxy_connection::query_router(thread_data* local_buf, int PacketNomb
528
559
{
529
560
return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_delete_from_pipes_settings(local_buf,PacketNomber);
530
561
}
562
+ else if (local_buf->qInfo .tokCompare (" conference" , local_buf->qInfo .tableName ))
563
+ {
564
+ return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
565
+ }
566
+ else if (local_buf->qInfo .tokCompare (" conference_members" , local_buf->qInfo .tableName ))
567
+ {
568
+ return proxy_query (PROXY_TO_RANDOM, local_buf,PacketNomber); // return sql_insert_into_conference(local_buf,PacketNomber);
569
+ }
531
570
else
532
571
{
533
572
return Send_Err_Package (SQL_ERR_NOT_EXIST, " Table doesn't exist" , PacketNomber+1 , local_buf, this );
@@ -595,6 +634,12 @@ int CometQLProxy_connection::sql_select_from_pipes(thread_data* local_buf, unsig
595
634
}
596
635
597
636
auto result = mysql_store_result (link ->getLink ());
637
+ if (result == NULL )
638
+ {
639
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[14] on node=%d (errno=%d, error=%s)\n " , link ->name (), mysql_errno (link ->getLink ()), mysql_error (link ->getLink ()));
640
+ continue ;
641
+ }
642
+
598
643
while ((row = mysql_fetch_row (result)))
599
644
{
600
645
long int_size = 0 ;
@@ -678,6 +723,12 @@ int CometQLProxy_connection::sql_union_select_from_users_time(thread_data* local
678
723
}
679
724
680
725
auto result = mysql_store_result (link ->getLink ());
726
+ if (result == NULL )
727
+ {
728
+ TagLoger::error (Log_CometQLCluster, 0 , " CometQLProxy error[15] on node=%d (errno=%d, error=%s)\n " , link ->name (), mysql_errno (link ->getLink ()), mysql_error (link ->getLink ()));
729
+ continue ;
730
+ }
731
+
681
732
while ((row = mysql_fetch_row (result)))
682
733
{
683
734
long time = 0 ;
0 commit comments