Fix bug that /*NO LOAD BALANCE*/ doesn't work in stream mode.
authorToshihiro Kitagawa <kitagawa at sraoss.co.jp>
Fri, 18 Feb 2011 13:39:46 +0000 (13:39 +0000)
committerToshihiro Kitagawa <kitagawa at sraoss.co.jp>
Fri, 18 Feb 2011 13:39:46 +0000 (13:39 +0000)
Reported by Hadadi Peter.
Fix bug with load balance in stream mode.

pool_query_context.c

index 3168e57edc047f8fb676e02afa4e4e6267a6e80b..22130da278a47e4399e130d1f5c50b84a9276893 100644 (file)
@@ -301,7 +301,8 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no
         */
        if (!strncasecmp(query, NO_LOAD_BALANCE, NO_LOAD_BALANCE_COMMENT_SZ))
        {
-               pool_set_node_to_be_sent(query_context, REAL_MASTER_NODE_ID);
+               pool_set_node_to_be_sent(query_context,
+                                                                MASTER_SLAVE ? PRIMARY_NODE_ID : REAL_MASTER_NODE_ID);
                return;
        }
 
@@ -349,7 +350,7 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no
                                 *      transaction isolation level is not SERIALIZABLE)
                                 * we might be able to load balance.
                                 */
-                               if (TSTATE(backend, MASTER_NODE_ID) == 'I' ||
+                               if (TSTATE(backend, PRIMARY_NODE_ID) == 'I' ||
                                        (!pool_is_writing_transaction() &&
                                         !pool_is_failed_transaction() &&
                                         pool_get_transaction_isolation() != POOL_SERIALIZABLE))