Changing a relation's name in parser stage - Mailing list pgsql-novice

From Matthias Lenz
Subject Changing a relation's name in parser stage
Date
Msg-id 000a01c4369f$14b0af40$9100a8c0@noctuaeeprwinl
Whole thread Raw
Responses Re: Changing a relation's name in parser stage
List pgsql-novice
I have to rewrite a query after beeing parsed by gram.y but before any transformations are applied to my SelectStmt structure in analyze.c. Therefore I wrote a function that creates a new SelectStmt structure, because I need some UNIONs in the rewritten query. Most of the sub strucure of the original query stays relevant, e.g. the GroupByClause, TargetClause and is assigned to the sub structure of the new SelectStmt structure. But I have to alter the relation names in the FromClause. From_clause is a list of RangeVar nodes I think, generated by the gram.y. And one attribute of the RangeVar node is relname, of type char *. How to alter the relname. Why they use char *, I want to assign something like "relation_x".
 
the following leads to a crash of psql, without these lines (List... "s_overall"); the modification function on the ApproxStmt (my own type of SelectStmt) works fine, but I need to change the relname!
 
[in anylze.c]
 
static SelectStmt *modifyApproxStmt(ApproxStmt *stmt)
{
 
List *i;
i=nth(1, stmt->fromClause);
((RangeVar *) lfirst(i))->relname = "s_overall";
 
...
...
}
 
Any ideas? It's puzzling me!
Matthew

pgsql-novice by date:

Previous
From: Bruno Wolff III
Date:
Subject: Re: RI / foreign key on VIEW
Next
From: David Cruz
Date:
Subject: Question about REF / DREF