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]