Commit 6f093f38 authored by Peter Eisentraut's avatar Peter Eisentraut

One-letter backslash commands now need a space before the first argument.

This has been the only documented and encouraged syntax for a long time, and
with extension facilities such as aliases being proposed, it is a good time to
clean up the legacy syntax a bit.

Author: Bernd Helmle <mailings@oopsware.de>
parent 170e331c
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2008, PostgreSQL Global Development Group * Copyright (c) 2000-2008, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.186 2008/01/01 19:45:55 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.187 2008/05/02 09:27:50 petere Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "command.h" #include "command.h"
...@@ -90,30 +90,6 @@ HandleSlashCmds(PsqlScanState scan_state, ...@@ -90,30 +90,6 @@ HandleSlashCmds(PsqlScanState scan_state,
/* And try to execute it */ /* And try to execute it */
status = exec_command(cmd, scan_state, query_buf); status = exec_command(cmd, scan_state, query_buf);
if (status == PSQL_CMD_UNKNOWN && strlen(cmd) > 1)
{
/*
* If the command was not recognized, try to parse it as a one-letter
* command with immediately following argument (a still-supported, but
* no longer encouraged, syntax).
*/
char new_cmd[2];
/* don't change cmd until we know it's okay */
new_cmd[0] = cmd[0];
new_cmd[1] = '\0';
psql_scan_slash_pushback(scan_state, cmd + 1);
status = exec_command(new_cmd, scan_state, query_buf);
if (status != PSQL_CMD_UNKNOWN)
{
/* adjust cmd for possible messages below */
cmd[1] = '\0';
}
}
if (status == PSQL_CMD_UNKNOWN) if (status == PSQL_CMD_UNKNOWN)
{ {
if (pset.cur_cmd_interactive) if (pset.cur_cmd_interactive)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2008, PostgreSQL Global Development Group * Copyright (c) 2000-2008, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.h,v 1.8 2008/01/01 19:45:56 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/psqlscan.h,v 1.9 2008/05/02 09:27:51 petere Exp $
*/ */
#ifndef PSQLSCAN_H #ifndef PSQLSCAN_H
#define PSQLSCAN_H #define PSQLSCAN_H
...@@ -61,6 +61,4 @@ extern char *psql_scan_slash_option(PsqlScanState state, ...@@ -61,6 +61,4 @@ extern char *psql_scan_slash_option(PsqlScanState state,
extern void psql_scan_slash_command_end(PsqlScanState state); extern void psql_scan_slash_command_end(PsqlScanState state);
extern void psql_scan_slash_pushback(PsqlScanState state, const char *str);
#endif /* PSQLSCAN_H */ #endif /* PSQLSCAN_H */
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.23 2008/01/01 19:45:56 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.24 2008/05/02 09:27:51 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -1525,22 +1525,6 @@ psql_scan_slash_command_end(PsqlScanState state) ...@@ -1525,22 +1525,6 @@ psql_scan_slash_command_end(PsqlScanState state)
/* There are no possible errors in this lex state... */ /* There are no possible errors in this lex state... */
} }
/*
* "Push back" the passed string so that it will be rescanned by subsequent
* psql_scan_slash_option calls. This is presently only used in the case
* where a single-letter command has been concatenated with its argument.
*
* We use the same buffer stack mechanism as for variable expansion.
*/
void
psql_scan_slash_pushback(PsqlScanState state, const char *str)
{
/* needed for push_new_buffer */
cur_state = state;
push_new_buffer(str);
}
/* /*
* Push the given string onto the stack of stuff to scan. * Push the given string onto the stack of stuff to scan.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment