diff --git a/child.c b/child.c index dfd5b12..e71acb7 100644 --- a/child.c +++ b/child.c @@ -419,7 +419,7 @@ void do_child(int unix_fd, int inet_fd) !strcmp(sp->database, "postgres") || !strcmp(sp->database, "regression")) { - reset_variables(); + reset_connection(); pool_close(frontend); pool_send_frontend_exits(backend); pool_discard_cp(sp->user, sp->database, sp->major); diff --git a/pool.h b/pool.h index 9ab724e..2cab04c 100644 --- a/pool.h +++ b/pool.h @@ -691,6 +691,7 @@ extern void check_stop_request(void); /* pool_process_query.c */ extern void reset_variables(void); +extern void reset_connection(void); extern void per_node_statement_log(POOL_CONNECTION_POOL *backend, int node_id, char *query); extern POOL_STATUS pool_extract_error_message(POOL_CONNECTION *backend, int major, bool unread, char **message); extern POOL_STATUS do_command(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, diff --git a/pool_process_query.c b/pool_process_query.c index 017b241..a6802c4 100644 --- a/pool_process_query.c +++ b/pool_process_query.c @@ -1865,6 +1865,18 @@ void reset_variables(void) receive_extended_begin = 0; } + +/* + * if connection_cache == 0, we don't need reset_query. + * but we need reset prepared list. + */ +void reset_connection(void) +{ + reset_variables(); + reset_prepared_list(&prepared_list); +} + + /* * Reset backend status. return values are: * 0: no query was issued 1: a query was issued 2: no more queries remain -1: error -- 1.6.6