diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c index b3f692780ebaee82b132c4a0a96b39e3dfc1f9e6..836f949b838df9c1caad6b4e029ad7382f0cdbe3 100644 --- a/src/bin/psql/psql.c +++ b/src/bin/psql/psql.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.152 1998/08/06 05:12:55 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.153 1998/08/10 20:31:38 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -254,6 +254,7 @@ slashUsage(PsqlSettings *pset) fprintf(fout, " \\t -- toggle table headings and row count (currently %s)\n", on(pset->opt.header)); fprintf(fout, " \\T [<html>] -- set html3.0 <table ...> options (currently '%s')\n", pset->opt.tableOpt ? pset->opt.tableOpt : ""); fprintf(fout, " \\x -- toggle expanded output (currently %s)\n", on(pset->opt.expanded)); + fprintf(fout, " \\w <fname> -- output current buffer to a file\n"); fprintf(fout, " \\z -- list current grant/revoke permissions\n"); fprintf(fout, " \\! [<cmd>] -- shell escape or command\n"); @@ -2135,13 +2136,34 @@ HandleSlashCmds(PsqlSettings *pset, break; } + case 'H': + if (toggle(pset, &pset->opt.html3, "HTML3.0 tabular output")) + pset->opt.standard = 0; + break; + case 'l': /* \l is list database */ listAllDbs(pset); break; - case 'H': - if (toggle(pset, &pset->opt.html3, "HTML3.0 tabular output")) - pset->opt.standard = 0; + case 'm': /* monitor like type-setting */ + if (toggle(pset, &pset->opt.standard, "standard SQL separaters and padding")) + { + pset->opt.html3 = pset->opt.expanded = 0; + pset->opt.align = pset->opt.header = 1; + if (pset->opt.fieldSep) + free(pset->opt.fieldSep); + pset->opt.fieldSep = strdup("|"); + if (!pset->quiet) + printf("field separator changed to '%s'\n", pset->opt.fieldSep); + } + else + { + if (pset->opt.fieldSep) + free(pset->opt.fieldSep); + pset->opt.fieldSep = strdup(DEFAULT_FIELD_SEP); + if (!pset->quiet) + printf("field separator changed to '%s'\n", pset->opt.fieldSep); + } break; case 'o': @@ -2175,31 +2197,6 @@ HandleSlashCmds(PsqlSettings *pset, #endif break; - case 'm': /* monitor like type-setting */ - if (toggle(pset, &pset->opt.standard, "standard SQL separaters and padding")) - { - pset->opt.html3 = pset->opt.expanded = 0; - pset->opt.align = pset->opt.header = 1; - if (pset->opt.fieldSep) - free(pset->opt.fieldSep); - pset->opt.fieldSep = strdup("|"); - if (!pset->quiet) - printf("field separator changed to '%s'\n", pset->opt.fieldSep); - } - else - { - if (pset->opt.fieldSep) - free(pset->opt.fieldSep); - pset->opt.fieldSep = strdup(DEFAULT_FIELD_SEP); - if (!pset->quiet) - printf("field separator changed to '%s'\n", pset->opt.fieldSep); - } - break; - - case 'z': /* list table rights (grant/revoke) */ - rightsList(pset); - break; - case 't': /* toggle headers */ toggle(pset, &pset->opt.header, "output headings and row count"); break; @@ -2216,10 +2213,34 @@ HandleSlashCmds(PsqlSettings *pset, } break; + case 'w': + { + FILE *fd; + + if (!optarg) + { + fprintf(stderr, "\\w must be followed by a file name\n"); + break; + } + if ((fd = fopen(optarg, "w")) == NULL) + { + fprintf(stderr, "file named %s could not be opened\n", optarg); + break; + } + fputs(query, fd); + fputs("\n", fd); + fclose(fd); + break; + } + case 'x': toggle(pset, &pset->opt.expanded, "expanded table representation"); break; + case 'z': /* list table rights (grant/revoke) */ + rightsList(pset); + break; + case '!': do_shell(optarg); break; @@ -2252,13 +2273,17 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source) int successResult = 1; int slashCmdStatus = CMD_SEND; - /* - * slashCmdStatus can be: CMD_UNKNOWN - send currently constructed - * query to backend (i.e. we got a \g) CMD_SEND - send - * currently constructed query to backend (i.e. we got a \g) - * CMD_SKIP_LINE - skip processing of this line, continue building - * up query CMD_TERMINATE - terminate processing of this query - * entirely CMD_NEWEDIT - new query supplied by edit + /*-------------------------------------------------------------- + * slashCmdStatus can be: + * CMD_UNKNOWN - send currently constructed query to backend + * (i.e. we got a \g) + * CMD_SEND - send currently constructed query to backend + * (i.e. we got a \g) + * CMD_SKIP_LINE - skip processing of this line, continue building + * up query + * CMD_TERMINATE - terminate processing of this query entirely + * CMD_NEWEDIT - new query supplied by edit + *--------------------------------------------------------------- */ bool querySent = false; @@ -2358,7 +2383,6 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source) * query - pointer to current command query_start - placeholder * for next command */ - if (line == NULL || (!interactive && *line == '\0')) { /* No more input. Time to quit, or \i * done */ diff --git a/src/man/psql.1 b/src/man/psql.1 index 323a2f71d8e11999ea2f611fe5286915f1755938..83820d3f3a1f972207dfd16a80a1041edc601017 100644 --- a/src/man/psql.1 +++ b/src/man/psql.1 @@ -1,6 +1,6 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/psql.1,v 1.27 1998/08/03 05:54:30 momjian Exp $ +.\" $Header: /cvsroot/pgsql/src/man/Attic/psql.1,v 1.28 1998/08/10 20:31:40 momjian Exp $ .TH PSQL UNIX 1/20/96 PostgreSQL PostgreSQL .SH NAME psql - run the interactive query front-end @@ -380,6 +380,9 @@ Toggles extended row format mode. When enabled each row will have its column names printed on the left with the column values printed on the right. This is useful for rows which are otherwise too long to fit into one screen line. HTML row output mode supports this flag too. +.IP "\ew [\fIfilename\fR]" +Outputs current query buffer to +.IR filename . .IP "\ez" Produces a list of all tables in database with their appropriate ACLs (grant/revoke permissions) listed. diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html index 5edafb8bc5e67e78497df638e06ad31a9c881f55..8c318ae8bbe7ff14ac787de7b44fbfd124c6dde6 100644 --- a/src/tools/backend/index.html +++ b/src/tools/backend/index.html @@ -162,7 +162,7 @@ HREF="../../backend/storage/ipc/shmem.c">ShmemInitHash().</A><P> <ADDRESS> Maintainer: Bruce Momjian (<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>)<BR> -Last updated: Tue Dec 9 17:56:08 EST 1997 +Last updated: Mon Aug 10 10:48:06 EDT 1998 </ADDRESS> </SMALL> </BODY>