diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-03-23 14:16:45 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-03-23 14:16:45 -0400 |
commit | 50c956add83963d7bbb367dd0b879fccddebd623 (patch) | |
tree | 8085aa18ddd62a0e09e51f63087d1f2fd264e943 /src | |
parent | 691b8d59281b5177f16fe80858df921f77a8e955 (diff) | |
download | postgresql-50c956add83963d7bbb367dd0b879fccddebd623.tar.gz postgresql-50c956add83963d7bbb367dd0b879fccddebd623.zip |
Remove createlang and droplang
They have been deprecated since PostgreSQL 9.1.
Reviewed-by: Magnus Hagander <magnus@hagander.net>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/scripts/.gitignore | 2 | ||||
-rw-r--r-- | src/bin/scripts/Makefile | 6 | ||||
-rw-r--r-- | src/bin/scripts/createlang.c | 251 | ||||
-rw-r--r-- | src/bin/scripts/droplang.c | 250 | ||||
-rw-r--r-- | src/bin/scripts/nls.mk | 4 | ||||
-rw-r--r-- | src/bin/scripts/t/030_createlang.pl | 25 | ||||
-rw-r--r-- | src/bin/scripts/t/060_droplang.pl | 23 | ||||
-rw-r--r-- | src/tools/msvc/Install.pm | 4 |
8 files changed, 5 insertions, 560 deletions
diff --git a/src/bin/scripts/.gitignore b/src/bin/scripts/.gitignore index 40998d9670d..0f23fe00045 100644 --- a/src/bin/scripts/.gitignore +++ b/src/bin/scripts/.gitignore @@ -1,9 +1,7 @@ /clusterdb /createdb -/createlang /createuser /dropdb -/droplang /dropuser /reindexdb /vacuumdb diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile index 2f911e05bab..45ac492cfde 100644 --- a/src/bin/scripts/Makefile +++ b/src/bin/scripts/Makefile @@ -16,7 +16,7 @@ subdir = src/bin/scripts top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb reindexdb pg_isready +PROGRAMS = createdb createuser dropdb dropuser clusterdb vacuumdb reindexdb pg_isready override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq @@ -27,10 +27,8 @@ all: $(PROGRAMS) $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) createdb: createdb.o common.o | submake-libpq submake-libpgport submake-libpgfeutils -createlang: createlang.o common.o | submake-libpq submake-libpgport submake-libpgfeutils createuser: createuser.o common.o | submake-libpq submake-libpgport submake-libpgfeutils dropdb: dropdb.o common.o | submake-libpq submake-libpgport submake-libpgfeutils -droplang: droplang.o common.o | submake-libpq submake-libpgport submake-libpgfeutils dropuser: dropuser.o common.o | submake-libpq submake-libpgport submake-libpgfeutils clusterdb: clusterdb.o common.o | submake-libpq submake-libpgport submake-libpgfeutils vacuumdb: vacuumdb.o common.o | submake-libpq submake-libpgport submake-libpgfeutils @@ -40,8 +38,6 @@ pg_isready: pg_isready.o common.o | submake-libpq submake-libpgport submake-libp install: all installdirs $(INSTALL_PROGRAM) createdb$(X) '$(DESTDIR)$(bindir)'/createdb$(X) $(INSTALL_PROGRAM) dropdb$(X) '$(DESTDIR)$(bindir)'/dropdb$(X) - $(INSTALL_PROGRAM) createlang$(X) '$(DESTDIR)$(bindir)'/createlang$(X) - $(INSTALL_PROGRAM) droplang$(X) '$(DESTDIR)$(bindir)'/droplang$(X) $(INSTALL_PROGRAM) createuser$(X) '$(DESTDIR)$(bindir)'/createuser$(X) $(INSTALL_PROGRAM) dropuser$(X) '$(DESTDIR)$(bindir)'/dropuser$(X) $(INSTALL_PROGRAM) clusterdb$(X) '$(DESTDIR)$(bindir)'/clusterdb$(X) diff --git a/src/bin/scripts/createlang.c b/src/bin/scripts/createlang.c deleted file mode 100644 index 5897bfe7475..00000000000 --- a/src/bin/scripts/createlang.c +++ /dev/null @@ -1,251 +0,0 @@ -/*------------------------------------------------------------------------- - * - * createlang - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/bin/scripts/createlang.c - * - *------------------------------------------------------------------------- - */ -#include "postgres_fe.h" - -#include "common.h" -#include "fe_utils/print.h" - -static void help(const char *progname); - - -int -main(int argc, char *argv[]) -{ - static struct option long_options[] = { - {"list", no_argument, NULL, 'l'}, - {"host", required_argument, NULL, 'h'}, - {"port", required_argument, NULL, 'p'}, - {"username", required_argument, NULL, 'U'}, - {"no-password", no_argument, NULL, 'w'}, - {"password", no_argument, NULL, 'W'}, - {"dbname", required_argument, NULL, 'd'}, - {"echo", no_argument, NULL, 'e'}, - {NULL, 0, NULL, 0} - }; - - const char *progname; - int optindex; - int c; - - bool listlangs = false; - const char *dbname = NULL; - char *host = NULL; - char *port = NULL; - char *username = NULL; - enum trivalue prompt_password = TRI_DEFAULT; - bool echo = false; - char *langname = NULL; - - char *p; - - PQExpBufferData sql; - - PGconn *conn; - PGresult *result; - - progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); - - handle_help_version_opts(argc, argv, "createlang", help); - - while ((c = getopt_long(argc, argv, "lh:p:U:wWd:e", long_options, &optindex)) != -1) - { - switch (c) - { - case 'l': - listlangs = true; - break; - case 'h': - host = pg_strdup(optarg); - break; - case 'p': - port = pg_strdup(optarg); - break; - case 'U': - username = pg_strdup(optarg); - break; - case 'w': - prompt_password = TRI_NO; - break; - case 'W': - prompt_password = TRI_YES; - break; - case 'd': - dbname = pg_strdup(optarg); - break; - case 'e': - echo = true; - break; - default: - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); - } - } - - /* - * We set dbname from positional arguments if it is not already set by - * option arguments -d. If not doing listlangs, positional dbname must - * follow positional langname. - */ - - if (argc - optind > 0) - { - if (listlangs) - { - if (dbname == NULL) - dbname = argv[optind++]; - } - else - { - langname = argv[optind++]; - if (argc - optind > 0 && dbname == NULL) - dbname = argv[optind++]; - } - } - - if (argc - optind > 0) - { - fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), - progname, argv[optind]); - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); - } - - if (dbname == NULL) - { - if (getenv("PGDATABASE")) - dbname = getenv("PGDATABASE"); - else if (getenv("PGUSER")) - dbname = getenv("PGUSER"); - else - dbname = get_user_name_or_exit(progname); - } - - initPQExpBuffer(&sql); - - /* - * List option - */ - if (listlangs) - { - printQueryOpt popt; - static const bool translate_columns[] = {false, true}; - - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, false, false); - - printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", " - "(CASE WHEN lanpltrusted THEN '%s' ELSE '%s' END) as \"%s\" " - "FROM pg_catalog.pg_language WHERE lanispl;", - gettext_noop("Name"), - gettext_noop("yes"), gettext_noop("no"), - gettext_noop("Trusted?")); - result = executeQuery(conn, sql.data, progname, echo); - - memset(&popt, 0, sizeof(popt)); - popt.topt.format = PRINT_ALIGNED; - popt.topt.border = 1; - popt.topt.start_table = true; - popt.topt.stop_table = true; - popt.topt.encoding = PQclientEncoding(conn); - popt.title = _("Procedural Languages"); - popt.translate_header = true; - popt.translate_columns = translate_columns; - popt.n_translate_columns = lengthof(translate_columns); - - printQuery(result, &popt, stdout, false, NULL); - - PQfinish(conn); - exit(0); - } - - if (langname == NULL) - { - fprintf(stderr, _("%s: missing required argument language name\n"), progname); - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); - } - - /* lower case language name */ - for (p = langname; *p; p++) - if (*p >= 'A' && *p <= 'Z') - *p += ('a' - 'A'); - - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, false, false); - - /* - * Make sure the language isn't already installed - */ - printfPQExpBuffer(&sql, - "SELECT oid FROM pg_catalog.pg_language WHERE lanname = '%s';", - langname); - result = executeQuery(conn, sql.data, progname, echo); - if (PQntuples(result) > 0) - { - fprintf(stderr, - _("%s: language \"%s\" is already installed in database \"%s\"\n"), - progname, langname, PQdb(conn)); - PQfinish(conn); - /* separate exit status for "already installed" */ - exit(2); - } - PQclear(result); - - /* - * In 9.1 and up, assume that languages should be installed using CREATE - * EXTENSION. However, it's possible this tool could be used against an - * older server, and it's easy enough to continue supporting the old way. - */ - if (PQserverVersion(conn) >= 90100) - printfPQExpBuffer(&sql, "CREATE EXTENSION \"%s\";", langname); - else - printfPQExpBuffer(&sql, "CREATE LANGUAGE \"%s\";", langname); - - if (echo) - printf("%s\n", sql.data); - result = PQexec(conn, sql.data); - if (PQresultStatus(result) != PGRES_COMMAND_OK) - { - fprintf(stderr, _("%s: language installation failed: %s"), - progname, PQerrorMessage(conn)); - PQfinish(conn); - exit(1); - } - - PQclear(result); - PQfinish(conn); - exit(0); -} - - - -static void -help(const char *progname) -{ - printf(_("%s installs a procedural language into a PostgreSQL database.\n\n"), progname); - printf(_("Usage:\n")); - printf(_(" %s [OPTION]... LANGNAME [DBNAME]\n"), progname); - printf(_("\nOptions:\n")); - printf(_(" -d, --dbname=DBNAME database to install language in\n")); - printf(_(" -e, --echo show the commands being sent to the server\n")); - printf(_(" -l, --list show a list of currently installed languages\n")); - printf(_(" -V, --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")); - printf(_(" -U, --username=USERNAME user name to connect as\n")); - printf(_(" -w, --no-password never prompt for password\n")); - printf(_(" -W, --password force password prompt\n")); - printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); -} diff --git a/src/bin/scripts/droplang.c b/src/bin/scripts/droplang.c deleted file mode 100644 index 97d1de43ae8..00000000000 --- a/src/bin/scripts/droplang.c +++ /dev/null @@ -1,250 +0,0 @@ -/*------------------------------------------------------------------------- - * - * droplang - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/bin/scripts/droplang.c - * - *------------------------------------------------------------------------- - */ -#include "postgres_fe.h" - -#include "common.h" -#include "fe_utils/print.h" - - -static void help(const char *progname); - - -int -main(int argc, char *argv[]) -{ - static struct option long_options[] = { - {"list", no_argument, NULL, 'l'}, - {"host", required_argument, NULL, 'h'}, - {"port", required_argument, NULL, 'p'}, - {"username", required_argument, NULL, 'U'}, - {"no-password", no_argument, NULL, 'w'}, - {"password", no_argument, NULL, 'W'}, - {"dbname", required_argument, NULL, 'd'}, - {"echo", no_argument, NULL, 'e'}, - {NULL, 0, NULL, 0} - }; - - const char *progname; - int optindex; - int c; - bool listlangs = false; - const char *dbname = NULL; - char *host = NULL; - char *port = NULL; - char *username = NULL; - enum trivalue prompt_password = TRI_DEFAULT; - bool echo = false; - char *langname = NULL; - char *p; - PQExpBufferData sql; - PGconn *conn; - PGresult *result; - - progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); - - handle_help_version_opts(argc, argv, "droplang", help); - - while ((c = getopt_long(argc, argv, "lh:p:U:wWd:e", long_options, &optindex)) != -1) - { - switch (c) - { - case 'l': - listlangs = true; - break; - case 'h': - host = pg_strdup(optarg); - break; - case 'p': - port = pg_strdup(optarg); - break; - case 'U': - username = pg_strdup(optarg); - break; - case 'w': - prompt_password = TRI_NO; - break; - case 'W': - prompt_password = TRI_YES; - break; - case 'd': - dbname = pg_strdup(optarg); - break; - case 'e': - echo = true; - break; - default: - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); - } - } - - /* - * We set dbname from positional arguments if it is not already set by - * option arguments -d. If not doing listlangs, positional dbname must - * follow positional langname. - */ - - if (argc - optind > 0) - { - if (listlangs) - { - if (dbname == NULL) - dbname = argv[optind++]; - } - else - { - langname = argv[optind++]; - if (argc - optind > 0 && dbname == NULL) - dbname = argv[optind++]; - } - } - - if (argc - optind > 0) - { - fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), - progname, argv[optind]); - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); - } - - if (dbname == NULL) - { - if (getenv("PGDATABASE")) - dbname = getenv("PGDATABASE"); - else if (getenv("PGUSER")) - dbname = getenv("PGUSER"); - else - dbname = get_user_name_or_exit(progname); - } - - initPQExpBuffer(&sql); - - /* - * List option - */ - if (listlangs) - { - printQueryOpt popt; - static const bool translate_columns[] = {false, true}; - - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, false, false); - - printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", " - "(CASE WHEN lanpltrusted THEN '%s' ELSE '%s' END) as \"%s\" " - "FROM pg_catalog.pg_language WHERE lanispl;", - gettext_noop("Name"), - gettext_noop("yes"), gettext_noop("no"), - gettext_noop("Trusted?")); - result = executeQuery(conn, sql.data, progname, echo); - - memset(&popt, 0, sizeof(popt)); - popt.topt.format = PRINT_ALIGNED; - popt.topt.border = 1; - popt.topt.start_table = true; - popt.topt.stop_table = true; - popt.topt.encoding = PQclientEncoding(conn); - popt.title = _("Procedural Languages"); - popt.translate_header = true; - popt.translate_columns = translate_columns; - popt.n_translate_columns = lengthof(translate_columns); - - printQuery(result, &popt, stdout, false, NULL); - - PQfinish(conn); - exit(0); - } - - if (langname == NULL) - { - fprintf(stderr, _("%s: missing required argument language name\n"), - progname); - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), - progname); - exit(1); - } - - /* lower case language name */ - for (p = langname; *p; p++) - if (*p >= 'A' && *p <= 'Z') - *p += ('a' - 'A'); - - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, false, false); - - /* - * Force schema search path to be just pg_catalog, so that we don't have - * to be paranoid about search paths below. - */ - executeCommand(conn, "SET search_path = pg_catalog;", progname, echo); - - /* - * Make sure the language is installed - */ - printfPQExpBuffer(&sql, "SELECT oid " - "FROM pg_language WHERE lanname = '%s' AND lanispl;", - langname); - result = executeQuery(conn, sql.data, progname, echo); - if (PQntuples(result) == 0) - { - fprintf(stderr, _("%s: language \"%s\" is not installed in " - "database \"%s\"\n"), - progname, langname, PQdb(conn)); - PQfinish(conn); - exit(1); - } - PQclear(result); - - /* - * Attempt to drop the language. We do not use CASCADE, so that the drop - * will fail if there are any functions in the language. - */ - printfPQExpBuffer(&sql, "DROP EXTENSION \"%s\";", langname); - - if (echo) - printf("%s\n", sql.data); - result = PQexec(conn, sql.data); - if (PQresultStatus(result) != PGRES_COMMAND_OK) - { - fprintf(stderr, _("%s: language removal failed: %s"), - progname, PQerrorMessage(conn)); - PQfinish(conn); - exit(1); - } - - PQclear(result); - PQfinish(conn); - exit(0); -} - - -static void -help(const char *progname) -{ - printf(_("%s removes a procedural language from a database.\n\n"), progname); - printf(_("Usage:\n")); - printf(_(" %s [OPTION]... LANGNAME [DBNAME]\n"), progname); - printf(_("\nOptions:\n")); - printf(_(" -d, --dbname=DBNAME database from which to remove the language\n")); - printf(_(" -e, --echo show the commands being sent to the server\n")); - printf(_(" -l, --list show a list of currently installed languages\n")); - printf(_(" -V, --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")); - printf(_(" -U, --username=USERNAME user name to connect as\n")); - printf(_(" -w, --no-password never prompt for password\n")); - printf(_(" -W, --password force password prompt\n")); - printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); -} diff --git a/src/bin/scripts/nls.mk b/src/bin/scripts/nls.mk index 9156d08a80e..ef64083f5f2 100644 --- a/src/bin/scripts/nls.mk +++ b/src/bin/scripts/nls.mk @@ -1,8 +1,8 @@ # src/bin/scripts/nls.mk CATALOG_NAME = pgscripts AVAIL_LANGUAGES = cs de es fr it ja ko pl pt_BR ru sv zh_CN -GETTEXT_FILES = createdb.c createlang.c createuser.c \ - dropdb.c droplang.c dropuser.c \ +GETTEXT_FILES = createdb.c createuser.c \ + dropdb.c dropuser.c \ clusterdb.c vacuumdb.c reindexdb.c \ pg_isready.c \ common.c \ diff --git a/src/bin/scripts/t/030_createlang.pl b/src/bin/scripts/t/030_createlang.pl deleted file mode 100644 index ffbd35dcc5a..00000000000 --- a/src/bin/scripts/t/030_createlang.pl +++ /dev/null @@ -1,25 +0,0 @@ -use strict; -use warnings; - -use PostgresNode; -use TestLib; -use Test::More tests => 14; - -program_help_ok('createlang'); -program_version_ok('createlang'); -program_options_handling_ok('createlang'); - -my $node = get_new_node('main'); -$node->init; -$node->start; - -$node->command_fails([ 'createlang', 'plpgsql' ], - 'fails if language already exists'); - -$node->safe_psql('postgres', 'DROP EXTENSION plpgsql'); -$node->issues_sql_like( - [ 'createlang', 'plpgsql' ], - qr/statement: CREATE EXTENSION "plpgsql"/, - 'SQL CREATE EXTENSION run'); - -$node->command_like([ 'createlang', '--list' ], qr/plpgsql/, 'list output'); diff --git a/src/bin/scripts/t/060_droplang.pl b/src/bin/scripts/t/060_droplang.pl deleted file mode 100644 index 904cea2d4bd..00000000000 --- a/src/bin/scripts/t/060_droplang.pl +++ /dev/null @@ -1,23 +0,0 @@ -use strict; -use warnings; - -use PostgresNode; -use TestLib; -use Test::More tests => 11; - -program_help_ok('droplang'); -program_version_ok('droplang'); -program_options_handling_ok('droplang'); - -my $node = get_new_node('main'); -$node->init; -$node->start; - -$node->issues_sql_like( - [ 'droplang', 'plpgsql', 'postgres' ], - qr/statement: DROP EXTENSION "plpgsql"/, - 'SQL DROP EXTENSION run'); - -$node->command_fails( - [ 'droplang', 'nonexistent', 'postgres' ], - 'fails with nonexistent language'); diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm index 0aa1422b9fb..b81f4dd809c 100644 --- a/src/tools/msvc/Install.pm +++ b/src/tools/msvc/Install.pm @@ -20,8 +20,8 @@ our (@ISA, @EXPORT_OK); my $insttype; my @client_contribs = ('oid2name', 'pgbench', 'vacuumlo'); my @client_program_files = ( - 'clusterdb', 'createdb', 'createlang', 'createuser', - 'dropdb', 'droplang', 'dropuser', 'ecpg', + 'clusterdb', 'createdb', 'createuser', + 'dropdb', 'dropuser', 'ecpg', 'libecpg', 'libecpg_compat', 'libpgtypes', 'libpq', 'pg_basebackup', 'pg_config', 'pg_dump', 'pg_dumpall', 'pg_isready', 'pg_receivewal', 'pg_recvlogical', 'pg_restore', |