Always qualify relation names.
Due to change at PostgreSQL 10.3, 9.6.8, 9.5.12, 9.4.17 and 9.3.22, relation names passed by PostgreSQL function such as pg_get_indexdef_string() are schema-qualified, which could be cause of a parse error.
This commit is contained in:
parent
bf61feefc4
commit
2f6196d654
16
lib/repack.c
16
lib/repack.c
@ -354,11 +354,27 @@ get_relation_name(Oid relid)
|
||||
Oid nsp = get_rel_namespace(relid);
|
||||
char *nspname;
|
||||
|
||||
/*
|
||||
* Relation names given by PostgreSQL core are always
|
||||
* qualified since some minor releases.
|
||||
*/
|
||||
#if ((PG_VERSION_NUM >= 100000 && PG_VERSION_NUM < 100003) || \
|
||||
(PG_VERSION_NUM >= 90600 && PG_VERSION_NUM < 90608) || \
|
||||
(PG_VERSION_NUM >= 90500 && PG_VERSION_NUM < 90512) || \
|
||||
(PG_VERSION_NUM >= 90400 && PG_VERSION_NUM < 90417) || \
|
||||
(PG_VERSION_NUM >= 90300 && PG_VERSION_NUM < 90322))
|
||||
/* Qualify the name if not visible in search path */
|
||||
if (RelationIsVisible(relid))
|
||||
nspname = NULL;
|
||||
else
|
||||
nspname = get_namespace_name(nsp);
|
||||
#else
|
||||
/* Qualify the name */
|
||||
if (OidIsValid(nsp))
|
||||
nspname = get_namespace_name(nsp);
|
||||
else
|
||||
nspname = NULL;
|
||||
#endif
|
||||
|
||||
return quote_qualified_identifier(nspname, get_rel_name(relid));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user