]> granicus.if.org Git - postgresql/blobdiff - src/bin/scripts/dropuser.c
Empty search_path in Autovacuum and non-psql/pgbench clients.
[postgresql] / src / bin / scripts / dropuser.c
index 85b73a42ac206a0783a61639f61d4d08099017cf..d9e7f7b0364110f48b735f88b5a32446daa3ad4b 100644 (file)
@@ -2,7 +2,7 @@
  *
  * dropuser
  *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/bin/scripts/dropuser.c
@@ -12,7 +12,7 @@
 
 #include "postgres_fe.h"
 #include "common.h"
-#include "dumputils.h"
+#include "fe_utils/string_utils.h"
 
 
 static void help(const char *progname);
@@ -46,6 +46,7 @@ main(int argc, char *argv[])
        enum trivalue prompt_password = TRI_DEFAULT;
        bool            echo = false;
        bool            interactive = false;
+       char            dropuser_buf[128];
 
        PQExpBufferData sql;
 
@@ -62,13 +63,13 @@ main(int argc, char *argv[])
                switch (c)
                {
                        case 'h':
-                               host = optarg;
+                               host = pg_strdup(optarg);
                                break;
                        case 'p':
-                               port = optarg;
+                               port = pg_strdup(optarg);
                                break;
                        case 'U':
-                               username = optarg;
+                               username = pg_strdup(optarg);
                                break;
                        case 'w':
                                prompt_password = TRI_NO;
@@ -108,7 +109,11 @@ main(int argc, char *argv[])
        if (dropuser == NULL)
        {
                if (interactive)
-                       dropuser = simple_prompt("Enter name of role to drop: ", 128, true);
+               {
+                       simple_prompt("Enter name of role to drop: ",
+                                                 dropuser_buf, sizeof(dropuser_buf), true);
+                       dropuser = dropuser_buf;
+               }
                else
                {
                        fprintf(stderr, _("%s: missing required argument role name\n"), progname);
@@ -125,14 +130,14 @@ main(int argc, char *argv[])
        }
 
        initPQExpBuffer(&sql);
-       appendPQExpBuffer(&sql, "DROP ROLE %s%s;\n",
+       appendPQExpBuffer(&sql, "DROP ROLE %s%s;",
                                          (if_exists ? "IF EXISTS " : ""), fmtId(dropuser));
 
        conn = connectDatabase("postgres", host, port, username, prompt_password,
-                                                  progname, false);
+                                                  progname, echo, false, false);
 
        if (echo)
-               printf("%s", sql.data);
+               printf("%s\n", sql.data);
        result = PQexec(conn, sql.data);
 
        if (PQresultStatus(result) != PGRES_COMMAND_OK)
@@ -159,9 +164,9 @@ help(const char *progname)
        printf(_("  -e, --echo                show the commands being sent to the server\n"));
        printf(_("  -i, --interactive         prompt before deleting anything, and prompt for\n"
                         "                            role name if not specified\n"));
+       printf(_("  -V, --version             output version information, then exit\n"));
        printf(_("  --if-exists               don't report error if user doesn't exist\n"));
-       printf(_("  --help                    show this help, then exit\n"));
-       printf(_("  --version                 output version information, then exit\n"));
+       printf(_("  -?, --help                show this help, then exit\n"));
        printf(_("\nConnection options:\n"));
        printf(_("  -h, --host=HOSTNAME       database server host or socket directory\n"));
        printf(_("  -p, --port=PORT           database server port\n"));