mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 16:21:20 +03:00
Fix ancient oversight in psql's \d pattern processing code: when seeing two
quote chars inside quote marks, should emit one quote *and stay in inquotes mode*. No doubt the lack of reports of this have something to do with the poor documentation of the feature ...
This commit is contained in:
parent
a5d892b1c9
commit
e407ca3a7b
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.129.2.2 2006/03/02 19:40:29 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.129.2.3 2006/10/07 22:21:44 tgl Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "describe.h"
|
||||
@ -1803,34 +1803,37 @@ processNamePattern(PQExpBuffer buf, const char *pattern,
|
||||
|
||||
while (*cp)
|
||||
{
|
||||
if (*cp == '"')
|
||||
char ch = *cp;
|
||||
|
||||
if (ch == '"')
|
||||
{
|
||||
if (inquotes && cp[1] == '"')
|
||||
{
|
||||
/* emit one quote */
|
||||
/* emit one quote, stay in inquotes mode */
|
||||
appendPQExpBufferChar(&namebuf, '"');
|
||||
cp++;
|
||||
}
|
||||
inquotes = !inquotes;
|
||||
else
|
||||
inquotes = !inquotes;
|
||||
cp++;
|
||||
}
|
||||
else if (!inquotes && isupper((unsigned char) *cp))
|
||||
else if (!inquotes && isupper((unsigned char) ch))
|
||||
{
|
||||
appendPQExpBufferChar(&namebuf,
|
||||
pg_tolower((unsigned char) *cp));
|
||||
pg_tolower((unsigned char) ch));
|
||||
cp++;
|
||||
}
|
||||
else if (!inquotes && *cp == '*')
|
||||
else if (!inquotes && ch == '*')
|
||||
{
|
||||
appendPQExpBuffer(&namebuf, ".*");
|
||||
cp++;
|
||||
}
|
||||
else if (!inquotes && *cp == '?')
|
||||
else if (!inquotes && ch == '?')
|
||||
{
|
||||
appendPQExpBufferChar(&namebuf, '.');
|
||||
cp++;
|
||||
}
|
||||
else if (!inquotes && *cp == '.')
|
||||
else if (!inquotes && ch == '.')
|
||||
{
|
||||
/* Found schema/name separator, move current pattern to schema */
|
||||
resetPQExpBuffer(&schemabuf);
|
||||
|
Loading…
x
Reference in New Issue
Block a user