On Fri, Aug 9, 2013 at 01:39:35PM -0400, Tom Lane wrote:
> Bruce Momjian <[email protected]> writes:
> > On Fri, Aug 9, 2013 at 12:53:20PM -0400, Tom Lane wrote:
> >> This really requires more than no attention to the comments, especially
> >> since you just removed the only apparent reason for _getObjectDescription
> >> to make a distinction between objects whose name includes a schema and
> >> those that don't.
>
> > I am confused. Are you saying I didn't read the comments, or that I can
> > now merge the schema-qualified and non-schema-qualified object sections?
>
> Well, it's certainly not immediately obvious why we shouldn't merge them.
> But I would have expected the function's header comment to now explain
> that the output is intentionally not schema-qualified and assumes that the
> search path is set for the object's schema if any.
OK, done with the attached patch. The dump output is unchanged.
> > Also, this seems like dead code as there is no test for "INDEX" in the
> > if() block it exists in:
>
> > /*
> > * Pre-7.3 pg_dump would sometimes (not always) put a fmtId'd name
> > * into te->tag for an index. This check is heuristic, so make its
> > * scope as narrow as possible.
> > */
> > if (AH->version < K_VERS_1_7 &&
> > te->tag[0] == '"' &&
> > te->tag[strlen(te->tag) - 1] == '"' &&
> > strcmp(type, "INDEX") == 0)
> > appendPQExpBuffer(buf, "%s", te->tag);
> > else
>
> Huh, yeah it is dead code, since _printTocEntry doesn't call this function
> for "INDEX" objects. And anyway I doubt anybody still cares about reading
> 7.2-era archive files. No objection to removing that.
Removed.
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
new file mode 100644
index cd7669b..5204ceb
*** a/src/bin/pg_dump/pg_backup_archiver.c
--- b/src/bin/pg_dump/pg_backup_archiver.c
*************** _selectTablespace(ArchiveHandle *AH, con
*** 2879,2889 ****
/*
* Extract an object description for a TOC entry, and append it to buf.
*
! * This is not quite as general as it may seem, since it really only
! * handles constructing the right thing to put into ALTER ... OWNER TO.
! *
! * The whole thing is pretty grotty, but we are kind of stuck since the
! * information used is all that's available in older dump files.
*/
static void
_getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
--- 2879,2885 ----
/*
* Extract an object description for a TOC entry, and append it to buf.
*
! * This is used for ALTER ... OWNER TO.
*/
static void
_getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
*************** _getObjectDescription(PQExpBuffer buf, T
*** 2895,2901 ****
strcmp(type, "MATERIALIZED VIEW") == 0)
type = "TABLE";
! /* objects named by a schema and name */
if (strcmp(type, "COLLATION") == 0 ||
strcmp(type, "CONVERSION") == 0 ||
strcmp(type, "DOMAIN") == 0 ||
--- 2891,2897 ----
strcmp(type, "MATERIALIZED VIEW") == 0)
type = "TABLE";
! /* objects that don't require special decoration */
if (strcmp(type, "COLLATION") == 0 ||
strcmp(type, "CONVERSION") == 0 ||
strcmp(type, "DOMAIN") == 0 ||
*************** _getObjectDescription(PQExpBuffer buf, T
*** 2903,2937 ****
strcmp(type, "TYPE") == 0 ||
strcmp(type, "FOREIGN TABLE") == 0 ||
strcmp(type, "TEXT SEARCH DICTIONARY") == 0 ||
! strcmp(type, "TEXT SEARCH CONFIGURATION") == 0)
! {
! appendPQExpBuffer(buf, "%s ", type);
! if (te->namespace && te->namespace[0]) /* is null pre-7.3 */
! appendPQExpBuffer(buf, "%s.", fmtId(te->namespace));
!
! /*
! * Pre-7.3 pg_dump would sometimes (not always) put a fmtId'd name
! * into te->tag for an index. This check is heuristic, so make its
! * scope as narrow as possible.
! */
! if (AH->version < K_VERS_1_7 &&
! te->tag[0] == '"' &&
! te->tag[strlen(te->tag) - 1] == '"' &&
! strcmp(type, "INDEX") == 0)
! appendPQExpBuffer(buf, "%s", te->tag);
! else
! appendPQExpBuffer(buf, "%s", fmtId(te->tag));
! return;
! }
!
! /* objects named by just a name */
! if (strcmp(type, "DATABASE") == 0 ||
strcmp(type, "PROCEDURAL LANGUAGE") == 0 ||
strcmp(type, "SCHEMA") == 0 ||
strcmp(type, "FOREIGN DATA WRAPPER") == 0 ||
strcmp(type, "SERVER") == 0 ||
strcmp(type, "USER MAPPING") == 0)
{
appendPQExpBuffer(buf, "%s %s", type, fmtId(te->tag));
return;
}
--- 2899,2914 ----
strcmp(type, "TYPE") == 0 ||
strcmp(type, "FOREIGN TABLE") == 0 ||
strcmp(type, "TEXT SEARCH DICTIONARY") == 0 ||
! strcmp(type, "TEXT SEARCH CONFIGURATION") == 0 ||
! /* non-schema-specified objects */
! strcmp(type, "DATABASE") == 0 ||
strcmp(type, "PROCEDURAL LANGUAGE") == 0 ||
strcmp(type, "SCHEMA") == 0 ||
strcmp(type, "FOREIGN DATA WRAPPER") == 0 ||
strcmp(type, "SERVER") == 0 ||
strcmp(type, "USER MAPPING") == 0)
{
+ /* We already know that search_path was set properly */
appendPQExpBuffer(buf, "%s %s", type, fmtId(te->tag));
return;
}
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers