pgpool2.git / summary / log / commit / refs
commit 53c27a05847b11d9a2dc9b5216e336dfd409ab0e
Author: Takuma Hoshiai <hoshiai@sraoss.co.jp>
Date: Wed Nov 21 08:09:43 2018 +0000
hange sort algorism buble sort to quick sort .
This is used to sort startup packet's parameters.
src/protocol/child.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/src/protocol/child.c b/src/protocol/child.c
index 678d42671..9abb4af8d 100644
--- a/src/protocol/child.c
+++ b/src/protocol/child.c
@@ -88,6 +88,7 @@ static bool backend_cleanup(POOL_CONNECTION * volatile *frontend, POOL_CONNECTIO
static void free_persisten_db_connection_memory(POOL_CONNECTION_POOL_SLOT * cp);
static int choose_db_node_id(char *str);
static void child_will_go_down(int code, Datum arg);
+static int opt_sort(const void *a, const void *b);
/*
* non 0 means SIGTERM(smart shutdown) or SIGINT(fast shutdown) has arrived
@@ -522,7 +523,6 @@ read_startup_packet(POOL_CONNECTION * cp)
char *sp_sort;
char *tmpopt;
int i;
- int j;
sp = (StartupPacket *) palloc0(sizeof(*sp));
@@ -588,19 +588,8 @@ read_startup_packet(POOL_CONNECTION * cp)
p += (strlen(p) + 1); /* skip option name */
p += (strlen(p) + 1); /* skip option value */
}
- /* sort option name using bubble sort */
- for (i = 0; i < opt_num - 1 ; i++)
- {
- for (j = i + 1; j < opt_num; j++)
- {
- if (strcmp(guc_options[i], guc_options[j]) > 0)
- {
- tmpopt = guc_options[i];
- guc_options[i] = guc_options[j];
- guc_options[j] = tmpopt;
- }
- }
- }
+ /* sort option name using quick sort */
+ qsort( (void *)guc_options, opt_num, sizeof(char *), opt_sort );
p = sp->startup_packet + sizeof(int); /* skip protocol version info */
for (i = 0; i < opt_num; i++)
@@ -2428,3 +2417,8 @@ pg_frontend_exists(void)
return -1;
return 0;
}
+
+static int opt_sort(const void *a, const void *b)
+{
+ return strcmp( *(char **)a, *(char **)b);
+}
[parent: ffb998517bb9]