mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08: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
704f8ea11c
commit
5361743826
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.111 2005/01/01 05:43:08 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.111.4.1 2006/10/07 22:21:50 tgl Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "describe.h"
|
||||
@ -1815,34 +1815,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…
Reference in New Issue
Block a user