summaryrefslogtreecommitdiff
path: root/src/backend/commands/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/view.c')
-rw-r--r--src/backend/commands/view.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index ce379216f6..831022825b 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -41,6 +41,7 @@ static void
DefineVirtualRelation(char *relname, List *tlist)
{
CreateStmt *createStmt = makeNode(CreateStmt);
+ RangeVar *rel = makeNode(RangeVar);
List *attrList,
*t;
@@ -83,11 +84,13 @@ DefineVirtualRelation(char *relname, List *tlist)
* now create the parameters for keys/inheritance etc. All of them are
* nil...
*/
- createStmt->relname = relname;
+ rel->relname = relname;
+ rel->schemaname = NULL; /* XXX wrong */
+ rel->istemp = false;
+ createStmt->relation = rel;
createStmt->tableElts = attrList;
- createStmt->inhRelnames = NIL;
+ createStmt->inhRelations = NIL;
createStmt->constraints = NIL;
- createStmt->istemp = false;
createStmt->hasoids = false;
/*
@@ -101,21 +104,24 @@ FormViewRetrieveRule(char *viewName, Query *viewParse)
{
RuleStmt *rule;
char *rname;
- Attr *attr;
+ RangeVar *rel;
/*
* Create a RuleStmt that corresponds to the suitable rewrite rule
* args for DefineQueryRewrite();
*/
- rule = makeNode(RuleStmt);
rname = MakeRetrieveViewRuleName(viewName);
- attr = makeNode(Attr);
- attr->relname = pstrdup(viewName);
+ rel = makeNode(RangeVar);
+ rel->relname = pstrdup(viewName);
+ rel->inhOpt = INH_NO;
+ rel->alias = NULL;
+
+ rule = makeNode(RuleStmt);
+ rule->relation = rel;
rule->rulename = pstrdup(rname);
rule->whereClause = NULL;
rule->event = CMD_SELECT;
- rule->object = attr;
rule->instead = true;
rule->actions = makeList1(viewParse);
@@ -191,10 +197,10 @@ UpdateRangeTableOfViewParse(char *viewName, Query *viewParse)
* table... OLD first, then NEW....
*/
rt_entry1 = addRangeTableEntry(NULL, viewName,
- makeAttr("*OLD*", NULL),
+ makeAlias("*OLD*", NIL),
false, false);
rt_entry2 = addRangeTableEntry(NULL, viewName,
- makeAttr("*NEW*", NULL),
+ makeAlias("*NEW*", NIL),
false, false);
/* Must override addRangeTableEntry's default access-check flags */
rt_entry1->checkForRead = false;