From: Pavan Deolasee Date: Tue, 21 Jun 2016 08:06:49 +0000 (+0530) Subject: Warn about missing relations only if they are not views since views are not X-Git-Tag: XL_10_R1BETA1~650 X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=f25351fabcc0031d8cfcd1e035eca9afd571d76b;p=postgres-xl.git Warn about missing relations only if they are not views since views are not created on datanodes anyways This relates to the earlier commit --- diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 9cd2aca7e2..e3eaf18eda 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -3649,13 +3649,13 @@ _outRangeTblEntry(StringInfo str, const RangeTblEntry *node) switch (node->rtekind) { case RTE_RELATION: + WRITE_CHAR_FIELD(relkind); #ifdef XCP if (portable_output) WRITE_RELID_FIELD(relid); else #endif WRITE_OID_FIELD(relid); - WRITE_CHAR_FIELD(relkind); WRITE_NODE_FIELD(tablesample); break; case RTE_SUBQUERY: diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 98a1e0063d..060ce5a2ec 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -38,6 +38,7 @@ #ifdef XCP #include "fmgr.h" #include "catalog/namespace.h" +#include "catalog/pg_class.h" #include "nodes/plannodes.h" #include "pgxc/execRemote.h" #include "utils/builtins.h" @@ -230,7 +231,7 @@ set_portable_input(bool value) #define NSP_OID(nspname) LookupNamespaceNoError(nspname) /* Read relation identifier and lookup the OID */ -#define READ_RELID_INTERNAL(relid) \ +#define READ_RELID_INTERNAL(relid, warn) \ do { \ char *nspname; /* namespace name */ \ char *relname; /* relation name */ \ @@ -242,7 +243,7 @@ set_portable_input(bool value) { \ relid = get_relname_relid(relname, \ NSP_OID(nspname)); \ - if (!OidIsValid(relid)) \ + if (!OidIsValid((relid)) && (warn)) \ elog(WARNING, "could not find OID for relation %s.%s", nspname,\ relname); \ } \ @@ -250,11 +251,19 @@ set_portable_input(bool value) relid = InvalidOid; \ } while (0) +#define READ_RELID_FIELD_NOWARN(fldname) \ + do { \ + Oid relid; \ + token = pg_strtok(&length); /* skip :fldname */ \ + READ_RELID_INTERNAL(relid, false); \ + local_node->fldname = relid; \ + } while (0) + #define READ_RELID_FIELD(fldname) \ do { \ Oid relid; \ token = pg_strtok(&length); /* skip :fldname */ \ - READ_RELID_INTERNAL(relid); \ + READ_RELID_INTERNAL(relid, true); \ local_node->fldname = relid; \ } while (0) @@ -268,7 +277,7 @@ set_portable_input(bool value) for (;;) \ { \ Oid relid; \ - READ_RELID_INTERNAL(relid); \ + READ_RELID_INTERNAL(relid, true); \ local_node->fldname = lappend_oid(local_node->fldname, relid); \ token = pg_strtok(&length); \ if (token[0] == ')') \ @@ -2020,13 +2029,19 @@ _readRangeTblEntry(void) switch (local_node->rtekind) { case RTE_RELATION: + READ_CHAR_FIELD(relkind); #ifdef XCP if (portable_input) - READ_RELID_FIELD(relid); + { + if ((local_node->relkind != RELKIND_MATVIEW) && + (local_node->relkind != RELKIND_VIEW)) + READ_RELID_FIELD(relid); + else + READ_RELID_FIELD_NOWARN(relid); + } else #endif READ_OID_FIELD(relid); - READ_CHAR_FIELD(relkind); READ_NODE_FIELD(tablesample); break; case RTE_SUBQUERY: