Add extended query protocol support to pool_send_and_wait().
authorToshihiro Kitagawa <kitagawa at sraoss.co.jp>
Wed, 30 Jun 2010 00:12:11 +0000 (00:12 +0000)
committerToshihiro Kitagawa <kitagawa at sraoss.co.jp>
Wed, 30 Jun 2010 00:12:11 +0000 (00:12 +0000)
pool_query_context.c
pool_query_context.h

index 8e90947577e5ca9da3d50b9d56ad1fbf9447407c..8bd444cc728f371a60417c30b0063991eaa435bf 100644 (file)
@@ -392,9 +392,10 @@ void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *no
  *  -1: do not send this node_id
  *     0: send to all nodes
  *  >0: send to this node_id
+ * kind: simple query protocol is ""
  */
 POOL_STATUS pool_send_and_wait(POOL_QUERY_CONTEXT *query_context, char *query, int len,
-                                                          int send_type, int node_id)
+                                                          int send_type, int node_id, char *kind)
 {
        POOL_SESSION_CONTEXT *session_context;
        POOL_CONNECTION *frontend;
@@ -418,9 +419,15 @@ POOL_STATUS pool_send_and_wait(POOL_QUERY_CONTEXT *query_context, char *query, i
 
                per_node_statement_log(backend, i, query);
 
-               if (send_simplequery_message(CONNECTION(backend, i), len, query, MAJOR(backend)) != POOL_CONTINUE)
+               if (*kind == '\0')
                {
-                       return POOL_END;
+                       if (send_simplequery_message(CONNECTION(backend, i), len, query, MAJOR(backend)) != POOL_CONTINUE)
+                               return POOL_END;
+               }                       
+               else
+               {
+                       if (send_extended_protocol_message(backend, i, kind, len, query) != POOL_CONTINUE)
+                               return POOL_END;
                }
        }
 
index 18d7d8a2eb6a2305ad334e2b6d190cabb8df0fe4..f81336875a086995edd58fdd3d103696f5c99c61 100644 (file)
@@ -47,8 +47,6 @@ typedef struct {
        /* below are extended query only */
        bool is_named_statement;                /* true if named statement */
        bool is_named_portal;           /* true if named portal */
-       /* pointer to unnamed statement or named statement */
-       /* pointer to unnamed portal or named portal */
        /* query state: either 0: before parse, 1: parse done, 2: bind
         * done, 3: describe done 4: execute done -1: in error -> or
         * should be a bitmap? */
@@ -68,6 +66,6 @@ extern void pool_clear_node_to_be_sent(POOL_QUERY_CONTEXT *query_context);
 extern void pool_setall_node_to_be_sent(POOL_QUERY_CONTEXT *query_context);
 extern void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *node);
 POOL_STATUS pool_send_and_wait(POOL_QUERY_CONTEXT *query_context, char *query, int len,
-                                                          int send_type, int node_id);
+                                                          int send_type, int node_id, char *kind);
 
 #endif /* POOL_QUERY_CONTEXT_H */