]> granicus.if.org Git - pgbouncer/commitdiff
Send SHOW VERSION as row instead of NOTICE
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 19 Sep 2019 09:27:17 +0000 (11:27 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 19 Sep 2019 09:27:17 +0000 (11:27 +0200)
This makes it easier to consume and is consistent with other SHOW
commands.

patch by @eulerto, @davidfetter; documentation and tests by @petere

fixes #254, fixes #258, fixes #321

doc/usage.md
src/admin.c
test/test.sh

index 672280867c10c81af703abd0c0e8737264412f84..86a7c1c6f7c9e5044640ad9e3d9c154c68eb9680 100644 (file)
@@ -571,6 +571,11 @@ count
 :   Host names belonging to this zone.
 
 
+#### SHOW VERSION
+
+Show the PgBouncer version string.
+
+
 ### Process controlling commands
 
 #### PAUSE [db]
index 51668844ef674d1f4176739ccc67ab6df459e51b..b75baa0b20781f89f98dd0dfe9411c4e17bb76ad 100644 (file)
@@ -1297,13 +1297,20 @@ static bool admin_show_help(PgSocket *admin, const char *arg)
 
 static bool admin_show_version(PgSocket *admin, const char *arg)
 {
-       bool res;
-       SEND_generic(res, admin, 'N',
-               "ssss", "SNOTICE", "C00000",
-               "M" FULLVER, "");
-       if (res)
-               res = admin_ready(admin, "SHOW");
-       return res;
+       PktBuf *buf;
+
+       buf = pktbuf_dynamic(128);
+       if (!buf) {
+               admin_error(admin, "no mem");
+               return true;
+       }
+
+       pktbuf_write_RowDescription(buf, "s", "version");
+       pktbuf_write_DataRow(buf, "s", FULLVER);
+
+       admin_flush(admin, buf, "SHOW");
+
+       return true;
 }
 
 static bool admin_show_stats(PgSocket *admin, const char *arg)
index 63a5cce32a37257a38cbf3dbc7cdbaaebfbc83dc..52c2f6c8bdb065c5480f45d82bc1632e1a2d85cd 100755 (executable)
@@ -235,6 +235,17 @@ runtest() {
        return $status
 }
 
+# show version and --version
+test_show_version() {
+       v1=$($BOUNCER_EXE --version) || return 1
+       v2=$(psql -X -tAq -h /tmp -U pgbouncer -d pgbouncer -c "show version;") || return 1
+
+       echo "v1=$v1"
+       echo "v2=$v2"
+
+       test x"$v1" = x"$v2"
+}
+
 # server_lifetime
 test_server_lifetime() {
        admin "set server_lifetime=2"
@@ -778,7 +789,7 @@ test_scram_client() {
 # commands don't completely die.  The output can be manually eyeballed
 # in the test log file.
 test_show() {
-       for what in clients config databases fds help lists pools servers sockets active_sockets stats stats_totals stats_averages users version totals mem dns_hosts dns_zones; do
+       for what in clients config databases fds help lists pools servers sockets active_sockets stats stats_totals stats_averages users totals mem dns_hosts dns_zones; do
                    echo "=> show $what;"
                    psql -X -h /tmp -U pgbouncer -d pgbouncer -c "show $what;" || return 1
        done
@@ -789,6 +800,7 @@ test_show() {
 }
 
 testlist="
+test_show_version
 test_server_login_retry
 test_auth_user
 test_client_idle_timeout