From 4756f3093ccdd2d26e2e405b5ced7c75c51f4405 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 13 Nov 2000 23:37:54 +0000 Subject: [PATCH] Remove -k unix socketpath option from client side, allow hostname with leading slash to behave as a unix socket path. --- doc/src/sgml/libpq.sgml | 6 ++-- doc/src/sgml/ref/createdb.sgml | 12 ------- doc/src/sgml/ref/createlang.sgml | 12 ------- doc/src/sgml/ref/createuser.sgml | 12 ------- doc/src/sgml/ref/dropdb.sgml | 12 ------- doc/src/sgml/ref/droplang.sgml | 12 ------- doc/src/sgml/ref/dropuser.sgml | 12 ------- doc/src/sgml/ref/pg_dump.sgml | 16 ---------- doc/src/sgml/ref/pg_dumpall.sgml | 17 +--------- doc/src/sgml/ref/psql-ref.sgml | 13 -------- doc/src/sgml/ref/vacuumdb.sgml | 12 ------- src/backend/postmaster/postmaster.c | 4 +-- src/bin/pg_dump/pg_backup.h | 4 +-- src/bin/pg_dump/pg_backup_archiver.c | 5 ++- src/bin/pg_dump/pg_backup_archiver.h | 1 - src/bin/pg_dump/pg_backup_db.c | 10 ------ src/bin/pg_dump/pg_dump.c | 11 +------ src/bin/pg_dump/pg_restore.c | 9 ++---- src/bin/psql/command.c | 3 -- src/bin/psql/common.c | 2 -- src/bin/psql/help.c | 10 ------ src/bin/psql/prompt.c | 5 --- src/bin/psql/startup.c | 11 ++----- src/bin/scripts/createdb | 10 ------ src/bin/scripts/createlang.sh | 10 ------ src/bin/scripts/createuser | 10 ------ src/bin/scripts/dropdb | 10 ------ src/bin/scripts/droplang | 10 ------ src/bin/scripts/dropuser | 10 ------ src/bin/scripts/vacuumdb | 10 ------ src/interfaces/libpq/fe-connect.c | 47 +++++++++++++++++++++++----- src/interfaces/libpq/libpq-int.h | 4 +-- 32 files changed, 55 insertions(+), 277 deletions(-) diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 28f772afc7..aec57bc47f 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1844,9 +1844,9 @@ Without a host name, libpq will connect using a local Unix domain socket. -PGPORT sets the default port or local Unix domain socket -file extension for communicating with the Postgres -backend. +PGPORT and PGUNIXSOCKET set the default +port or local Unix domain socket file extension for communicating with +the Postgres backend. diff --git a/doc/src/sgml/ref/createdb.sgml b/doc/src/sgml/ref/createdb.sgml index 11ee9daa3d..dc0544bc85 100644 --- a/doc/src/sgml/ref/createdb.sgml +++ b/doc/src/sgml/ref/createdb.sgml @@ -56,18 +56,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -U, --username username diff --git a/doc/src/sgml/ref/createlang.sgml b/doc/src/sgml/ref/createlang.sgml index 77781d0c34..42cdfad5de 100644 --- a/doc/src/sgml/ref/createlang.sgml +++ b/doc/src/sgml/ref/createlang.sgml @@ -101,18 +101,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -U, --username username diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml index 24ce46a96b..0dd0e466fd 100644 --- a/doc/src/sgml/ref/createuser.sgml +++ b/doc/src/sgml/ref/createuser.sgml @@ -55,18 +55,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -e, --echo diff --git a/doc/src/sgml/ref/dropdb.sgml b/doc/src/sgml/ref/dropdb.sgml index c090908d83..7924104061 100644 --- a/doc/src/sgml/ref/dropdb.sgml +++ b/doc/src/sgml/ref/dropdb.sgml @@ -55,18 +55,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -U, --username username diff --git a/doc/src/sgml/ref/droplang.sgml b/doc/src/sgml/ref/droplang.sgml index 84551fa108..406d0b08a5 100644 --- a/doc/src/sgml/ref/droplang.sgml +++ b/doc/src/sgml/ref/droplang.sgml @@ -101,18 +101,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -U, --username username diff --git a/doc/src/sgml/ref/dropuser.sgml b/doc/src/sgml/ref/dropuser.sgml index b39ad281f3..de8a78e3e9 100644 --- a/doc/src/sgml/ref/dropuser.sgml +++ b/doc/src/sgml/ref/dropuser.sgml @@ -55,18 +55,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -e, --echo diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index 29d48f1545..1a50c83380 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -25,7 +25,6 @@ Postgres documentation pg_dump [ dbname ] pg_dump [ -h host ] - [ -k path ] [ -p port ] [ -t table ] [ -a ] [ -c ] [ -d ] [ -D ] [ -i ] [ -n ] [ -N ] @@ -206,21 +205,6 @@ pg_dump [ -h host ] - - -k path - - - Specifies the local Unix domain socket file path - on which the postmaster - is listening for connections. - Without this option, the socket path name defaults to - the value of the PGUNIXSOCKET environment - variable (if set), otherwise it is constructed - from the port number. - - - - -p port diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml index e8b7c32294..b2905e7387 100644 --- a/doc/src/sgml/ref/pg_dumpall.sgml +++ b/doc/src/sgml/ref/pg_dumpall.sgml @@ -23,7 +23,7 @@ Postgres documentation 1999-07-20 -pg_dumpall [ -h host ] [ -k path ] [ -p port ] [ -a ] [ -d ] [ -D ] [ -O ] [ -s ] [ -u ] [ -v ] [ -x ] [ --accounts-only ] +pg_dumpall [ -h host ] [ -p port ] [ -a ] [ -d ] [ -D ] [ -O ] [ -s ] [ -u ] [ -v ] [ -x ] [ --accounts-only ] @@ -149,21 +149,6 @@ pg_dumpall [ -h host ] [ -k - - -k path - - - Specifies the local Unix domain socket file path - on which the postmaster - is listening for connections. - Without this option, the socket path name defaults to - the value of the PGUNIXSOCKET environment - variable (if set), otherwise it is constructed - from the port number. - - - - -p port diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 0834845131..6563854785 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1329,19 +1329,6 @@ Access permissions for database "test" - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - - -H, --html diff --git a/doc/src/sgml/ref/vacuumdb.sgml b/doc/src/sgml/ref/vacuumdb.sgml index 8d6961c6cc..368a82f233 100644 --- a/doc/src/sgml/ref/vacuumdb.sgml +++ b/doc/src/sgml/ref/vacuumdb.sgml @@ -136,18 +136,6 @@ Postgres documentation - - -k, --unixsocket path - - - Specifies the Unix-domain socket on which the - postmaster is running. - Without this option, the socket is created in /tmp - based on the port number. - - - - -U username --username username diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index a6c3219474..6079d92bdf 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -1334,8 +1334,8 @@ get_host_port(void) { char msg[1024]; snprintf(msg, sizeof(msg), - "FATAL: get_host_port: gethostbyname(%s) failed: %s\n", - HostName, hstrerror(h_errno)); + "FATAL: get_host_port: gethostbyname(%s) failed\n", + HostName); fputs(msg, stderr); pqdebug("%s", msg); exit(1); diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h index ffe071a665..8fceb26c8e 100644 --- a/src/bin/pg_dump/pg_backup.h +++ b/src/bin/pg_dump/pg_backup.h @@ -99,9 +99,8 @@ typedef struct _restoreOptions { int useDB; char *dbname; - char *pghost; char *pgport; - char *pgunixsocket; + char *pghost; int ignoreVersion; int requirePassword; @@ -123,7 +122,6 @@ PGconn* ConnectDatabase(Archive *AH, const char* dbname, const char* pghost, const char* pgport, - const char* pgunixsocket, const int reqPwd, const int ignoreVersion); diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 085a2eb329..d8a969b41e 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -131,9 +131,8 @@ void RestoreArchive(Archive* AHX, RestoreOptions *ropt) if (AH->version < K_VERS_1_3) die_horribly(AH, "Direct database connections are not supported in pre-1.3 archives"); - ConnectDatabase(AHX, ropt->dbname, ropt->pghost, ropt->pgport, - ropt->pgunixsocket, ropt->requirePassword, - ropt->ignoreVersion); + ConnectDatabase(AHX, ropt->dbname, ropt->pghost, ropt->pgport, + ropt->requirePassword, ropt->ignoreVersion); /* * If no superuser was specified then see if the current user will do... diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h index a938f5e339..2c7291e6c6 100644 --- a/src/bin/pg_dump/pg_backup_archiver.h +++ b/src/bin/pg_dump/pg_backup_archiver.h @@ -187,7 +187,6 @@ typedef struct _archiveHandle { char *archdbname; /* DB name *read* from archive */ char *pghost; char *pgport; - char *pgunixsocket; PGconn *connection; PGconn *blobConnection; /* Connection for BLOB xref */ int txActive; /* Flag set if TX active on connection */ diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index 082edd5824..72189eb29f 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -273,7 +273,6 @@ PGconn* ConnectDatabase(Archive *AHX, const char* dbname, const char* pghost, const char* pgport, - const char* pgunixsocket, const int reqPwd, const int ignoreVersion) { @@ -308,15 +307,6 @@ PGconn* ConnectDatabase(Archive *AHX, else AH->pgport = NULL; - if (pgunixsocket != NULL) - { - AH->pgport = strdup(pgunixsocket); - sprintf(tmp_string, "unixsocket=%s ", AH->pgunixsocket); - strcat(connect_string, tmp_string); - } - else - AH->pgunixsocket = NULL; - sprintf(tmp_string, "dbname=%s ", AH->dbname); strcat(connect_string, tmp_string); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index c052acbfa5..e107086b21 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -200,7 +200,6 @@ help(const char *progname) " -F, --format {c|f|p} output file format (custom, files, plain text)\n" " -h, --host server host name\n" " -i, --ignore-version proceed when database version != pg_dump version\n" - " -k, --unixsocket server Unix-domain socket name\n" " -n, --no-quotes suppress most quotes around identifiers\n" " -N, --quotes enable most quotes around identifiers\n" " -o, --oids dump object ids (oids)\n" @@ -227,7 +226,6 @@ help(const char *progname) " -F {c|f|p} output file format (custom, files, plain text)\n" " -h server host name\n" " -i proceed when database version != pg_dump version\n" - " -k server Unix-domain socket name\n" " -n suppress most quotes around identifiers\n" " -N enable most quotes around identifiers\n" " -o dump object ids (oids)\n" @@ -631,7 +629,6 @@ main(int argc, char **argv) const char *dbname = NULL; const char *pghost = NULL; const char *pgport = NULL; - const char *pgunixsocket = NULL; char *tablename = NULL; bool oids = false; TableInfo *tblinfo; @@ -661,7 +658,6 @@ main(int argc, char **argv) {"attribute-inserts", no_argument, NULL, 'D'}, {"host", required_argument, NULL, 'h'}, {"ignore-version", no_argument, NULL, 'i'}, - {"unixsocket", required_argument, NULL, 'k'}, {"no-reconnect", no_argument, NULL, 'R'}, {"no-quotes", no_argument, NULL, 'n'}, {"quotes", no_argument, NULL, 'N'}, @@ -756,10 +752,6 @@ main(int argc, char **argv) ignore_version = true; break; - case 'k': /* server Unix-domain socket */ - pgunixsocket = optarg; - break; - case 'n': /* Do not force double-quotes on * identifiers */ force_quotes = false; @@ -956,8 +948,7 @@ main(int argc, char **argv) dbname = argv[optind]; /* Open the database using the Archiver, so it knows about it. Errors mean death */ - g_conn = ConnectDatabase(g_fout, dbname, pghost, pgport, pgunixsocket, - use_password, ignore_version); + g_conn = ConnectDatabase(g_fout, dbname, pghost, pgport, use_password, ignore_version); /* * Start serializable transaction to dump consistent data diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index cafb7e9df6..458482ed51 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -101,7 +101,6 @@ struct option cmdopts[] = { { "ignore-version", 0, NULL, 'i'}, { "index", 2, NULL, 'I'}, { "list", 0, NULL, 'l'}, - { "unixsocket", 1, NULL, 'k' }, { "no-acl", 0, NULL, 'x' }, { "no-owner", 0, NULL, 'O'}, { "no-reconnect", 0, NULL, 'R' }, @@ -133,9 +132,9 @@ int main(int argc, char **argv) progname = *argv; #ifdef HAVE_GETOPT_LONG - while ((c = getopt_long(argc, argv, "acCd:f:F:h:i:k:lNoOp:P:rRsS:t:T:uU:vx", cmdopts, NULL)) != EOF) + while ((c = getopt_long(argc, argv, "acCd:f:F:h:i:lNoOp:P:rRsS:t:T:uU:vx", cmdopts, NULL)) != EOF) #else - while ((c = getopt(argc, argv, "acCd:f:F:h:i:k:lNoOp:P:rRsS:t:T:uU:vx")) != -1) + while ((c = getopt(argc, argv, "acCd:f:F:h:i:lNoOp:P:rRsS:t:T:uU:vx")) != -1) #endif { switch (c) @@ -171,10 +170,6 @@ int main(int argc, char **argv) case 'i': opts->ignoreVersion = 1; break; - case 'k': - if (strlen(optarg) != 0) - opts->pgunixsocket = strdup(optarg); - break; case 'N': opts->origOrder = 1; break; diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 38303b379a..868159768f 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1202,7 +1202,6 @@ do_connect(const char *new_dbname, const char *new_user) SetVariable(pset.vars, "USER", NULL); SetVariable(pset.vars, "HOST", NULL); SetVariable(pset.vars, "PORT", NULL); - SetVariable(pset.vars, "UNIXSOCKET", NULL); SetVariable(pset.vars, "ENCODING", NULL); /* If dbname is "" then use old name, else new one (even if NULL) */ @@ -1232,7 +1231,6 @@ do_connect(const char *new_dbname, const char *new_user) do { need_pass = false; - /* FIXME use PQconnectdb to support passing the Unix socket */ pset.db = PQsetdbLogin(PQhost(oldconn), PQport(oldconn), NULL, NULL, dbparam, userparam, pwparam); @@ -1309,7 +1307,6 @@ do_connect(const char *new_dbname, const char *new_user) SetVariable(pset.vars, "USER", PQuser(pset.db)); SetVariable(pset.vars, "HOST", PQhost(pset.db)); SetVariable(pset.vars, "PORT", PQport(pset.db)); - SetVariable(pset.vars, "UNIXSOCKET", PQunixsocket(pset.db)); SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding)); pset.issuper = test_superuser(PQuser(pset.db)); diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 78201c1313..ed37cb35c8 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -329,7 +329,6 @@ PSQLexec(const char *query) SetVariable(pset.vars, "DBNAME", NULL); SetVariable(pset.vars, "HOST", NULL); SetVariable(pset.vars, "PORT", NULL); - SetVariable(pset.vars, "UNIXSOCKET", NULL); SetVariable(pset.vars, "USER", NULL); SetVariable(pset.vars, "ENCODING", NULL); return NULL; @@ -509,7 +508,6 @@ SendQuery(const char *query) SetVariable(pset.vars, "DBNAME", NULL); SetVariable(pset.vars, "HOST", NULL); SetVariable(pset.vars, "PORT", NULL); - SetVariable(pset.vars, "UNIXSOCKET", NULL); SetVariable(pset.vars, "USER", NULL); SetVariable(pset.vars, "ENCODING", NULL); return false; diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index 5c4ff62a79..8c601ab577 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -103,16 +103,6 @@ usage(void) puts(")"); puts(" -H HTML table output mode (-P format=html)"); - - /* Display default Unix-domain socket */ - env = getenv("PGUNIXSOCKET"); - printf(" -k Specify Unix domain socket name (default: "); - if (env) - fputs(env, stdout); - else - fputs("computed from the port", stdout); - puts(")"); - puts(" -l List available databases, then exit"); puts(" -n Disable readline"); puts(" -o Send query output to filename (or |pipe)"); diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c index 6b06e4d184..304922d65e 100644 --- a/src/bin/psql/prompt.c +++ b/src/bin/psql/prompt.c @@ -190,11 +190,6 @@ get_prompt(promptStatus_t status) if (pset.db && PQport(pset.db)) strncpy(buf, PQport(pset.db), MAX_PROMPT_SIZE); break; - /* DB server Unix-domain socket */ - case '<': - if (pset.db && PQunixsocket(pset.db)) - strncpy(buf, PQunixsocket(pset.db), MAX_PROMPT_SIZE); - break; /* DB server user name */ case 'n': if (pset.db) diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index e7b6ab6e86..8cd8168cd1 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -65,7 +65,6 @@ struct adhoc_opts char *dbname; char *host; char *port; - char *unixsocket; char *username; enum _actions action; char *action_string; @@ -162,7 +161,6 @@ main(int argc, char *argv[]) do { need_pass = false; - /* FIXME use PQconnectdb to allow setting the unix socket */ pset.db = PQsetdbLogin(options.host, options.port, NULL, NULL, options.action == ACT_LIST_DB ? "template1" : options.dbname, username, password); @@ -208,7 +206,6 @@ main(int argc, char *argv[]) SetVariable(pset.vars, "USER", PQuser(pset.db)); SetVariable(pset.vars, "HOST", PQhost(pset.db)); SetVariable(pset.vars, "PORT", PQport(pset.db)); - SetVariable(pset.vars, "UNIXSOCKET", PQunixsocket(pset.db)); SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding)); #ifndef WIN32 @@ -323,7 +320,6 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) {"field-separator", required_argument, NULL, 'F'}, {"host", required_argument, NULL, 'h'}, {"html", no_argument, NULL, 'H'}, - {"unixsocket", required_argument, NULL, 'k'}, {"list", no_argument, NULL, 'l'}, {"no-readline", no_argument, NULL, 'n'}, {"output", required_argument, NULL, 'o'}, @@ -357,14 +353,14 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) memset(options, 0, sizeof *options); #ifdef HAVE_GETOPT_LONG - while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:lh:Hk:no:p:P:qRsStT:uU:v:VWxX?", long_options, &optindex)) != -1) + while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:lh:Hno:p:P:qRsStT:uU:v:VWxX?", long_options, &optindex)) != -1) #else /* not HAVE_GETOPT_LONG */ /* * Be sure to leave the '-' in here, so we can catch accidental long * options. */ - while ((c = getopt(argc, argv, "aAc:d:eEf:F:lh:Hk:no:p:P:qRsStT:uU:v:VWxX?-")) != -1) + while ((c = getopt(argc, argv, "aAc:d:eEf:F:lh:Hno:p:P:qRsStT:uU:v:VWxX?-")) != -1) #endif /* not HAVE_GETOPT_LONG */ { switch (c) @@ -410,9 +406,6 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) case 'l': options->action = ACT_LIST_DB; break; - case 'k': - options->unixsocket = optarg; - break; case 'n': options->no_readline = true; break; diff --git a/src/bin/scripts/createdb b/src/bin/scripts/createdb index 35eeb463e3..07e0f01528 100644 --- a/src/bin/scripts/createdb +++ b/src/bin/scripts/createdb @@ -50,15 +50,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; --username|-U) PSQLOPT="$PSQLOPT -U $2" shift;; @@ -123,7 +114,6 @@ if [ "$usage" ]; then echo " -E, --encoding=ENCODING Multibyte encoding for the database" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as" echo " -W, --password Prompt for password" echo " -e, --echo Show the query being sent to the backend" diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh index 3da2cad59f..e171748896 100644 --- a/src/bin/scripts/createlang.sh +++ b/src/bin/scripts/createlang.sh @@ -65,15 +65,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; --username|-U) PSQLOPT="$PSQLOPT -U $2" shift;; @@ -135,7 +126,6 @@ if [ "$usage" ]; then echo "Options:" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as" echo " -W, --password Prompt for password" echo " -d, --dbname=DBNAME Database to install language in" diff --git a/src/bin/scripts/createuser b/src/bin/scripts/createuser index 69ea4bc61b..9d46d88a58 100644 --- a/src/bin/scripts/createuser +++ b/src/bin/scripts/createuser @@ -63,15 +63,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; # Note: These two specify the user to connect as (like in psql), # not the user you're creating. --username|-U) @@ -144,7 +135,6 @@ if [ "$usage" ]; then echo " -P, --pwprompt Assign a password to new user" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as (not the one to create)" echo " -W, --password Prompt for password to connect" echo " -e, --echo Show the query being sent to the backend" diff --git a/src/bin/scripts/dropdb b/src/bin/scripts/dropdb index 75b8a6221f..fccfecf6e0 100644 --- a/src/bin/scripts/dropdb +++ b/src/bin/scripts/dropdb @@ -59,15 +59,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; --username|-U) PSQLOPT="$PSQLOPT -U $2" shift;; @@ -112,7 +103,6 @@ if [ "$usage" ]; then echo "Options:" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as" echo " -W, --password Prompt for password" echo " -i, --interactive Prompt before deleting anything" diff --git a/src/bin/scripts/droplang b/src/bin/scripts/droplang index 778f77c7d1..6ba26c7642 100644 --- a/src/bin/scripts/droplang +++ b/src/bin/scripts/droplang @@ -65,15 +65,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; --username|-U) PSQLOPT="$PSQLOPT -U $2" shift;; @@ -122,7 +113,6 @@ if [ "$usage" ]; then echo "Options:" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as" echo " -W, --password Prompt for password" echo " -d, --dbname=DBNAME Database to remove language from" diff --git a/src/bin/scripts/dropuser b/src/bin/scripts/dropuser index 458aa84fe6..3282a3d61e 100644 --- a/src/bin/scripts/dropuser +++ b/src/bin/scripts/dropuser @@ -59,15 +59,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; # Note: These two specify the user to connect as (like in psql), # not the user you're dropping. --username|-U) @@ -114,7 +105,6 @@ if [ "$usage" ]; then echo "Options:" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as (not the one to drop)" echo " -W, --password Prompt for password to connect" echo " -i, --interactive Prompt before deleting anything" diff --git a/src/bin/scripts/vacuumdb b/src/bin/scripts/vacuumdb index 930b6b3810..de46af0371 100644 --- a/src/bin/scripts/vacuumdb +++ b/src/bin/scripts/vacuumdb @@ -52,15 +52,6 @@ do --port=*) PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'` ;; - --unixsocket|-k) - PSQLOPT="$PSQLOPT -k $2" - shift;; - -k*) - PSQLOPT="$PSQLOPT $1" - ;; - --unixsocket=*) - PSQLOPT="$PSQLOPT -k "`echo $1 | sed 's/^--unixsocket=//'` - ;; --username|-U) PSQLOPT="$PSQLOPT -U $2" shift;; @@ -130,7 +121,6 @@ if [ "$usage" ]; then echo "Options:" echo " -h, --host=HOSTNAME Database server host" echo " -p, --port=PORT Database server port" - echo " -k, --unixsocket=PATH Database server Unix-domain socket name" echo " -U, --username=USERNAME Username to connect as" echo " -W, --password Prompt for password" echo " -d, --dbname=DBNAME Database to vacuum" diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 39e32770d5..24d122e030 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -331,6 +331,25 @@ PQconnectStart(const char *conninfo) */ PQconninfoFree(connOptions); + /* ---------- + * Allow unix socket specification in the host name + * ---------- + */ + if (conn->pghost && conn->pghost[0] == '/') + { + if (conn->pgunixsocket) + free(conn->pgunixsocket); + conn->pgunixsocket = conn->pghost; + conn->pghost = NULL; + } + if (conn->pghostaddr && conn->pghostaddr[0] == '/') + { + if (conn->pgunixsocket) + free(conn->pgunixsocket); + conn->pgunixsocket = conn->pghostaddr; + conn->pghostaddr = NULL; + } + /* ---------- * Connect to the database * ---------- @@ -443,13 +462,25 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions, else conn->pgport = strdup(pgport); -#if FIX_ME - /* we need to modify the function to accept a unix socket path */ - if (pgunixsocket) - conn->pgunixsocket = strdup(pgunixsocket); - else if ((tmp = getenv("PGUNIXSOCKET")) != NULL) - conn->pgunixsocket = strdup(tmp); -#endif + /* ---------- + * We don't allow unix socket path as a function parameter. + * This allows unix socket specification in the host name. + * ---------- + */ + if (conn->pghost && conn->pghost[0] == '/') + { + if (conn->pgunixsocket) + free(conn->pgunixsocket); + conn->pgunixsocket = conn->pghost; + conn->pghost = NULL; + } + if (conn->pghostaddr && conn->pghostaddr[0] == '/') + { + if (conn->pgunixsocket) + free(conn->pgunixsocket); + conn->pgunixsocket = conn->pghostaddr; + conn->pghostaddr = NULL; + } if (pgtty == NULL) { @@ -778,7 +809,7 @@ connectDBStart(PGconn *conn) { printfPQExpBuffer(&conn->errorMessage, "connectDBStart() -- " - "invalid host address: %s\n", conn->pghostaddr); + "invalid host address: %s\n", conn->pghostaddr); goto connect_errReturn; } diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index 6786ccb6a1..4945f63b98 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -203,8 +203,8 @@ struct pg_conn * numbers-and-dots notation. Takes * precedence over above. */ char *pgport; /* the server's communication port */ - char *pgunixsocket; /* the Unix-domain socket that the server is listening on; - * if NULL, uses a default constructed from pgport */ + char *pgunixsocket; /* the Unix-domain socket that the server is listening on; + * if NULL, uses a default constructed from pgport */ char *pgtty; /* tty on which the backend messages is * displayed (NOT ACTUALLY USED???) */ char *pgoptions; /* options to start the backend with */ -- 2.39.5