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