Changing a relation's name in parser stage

Поиск
Список
Период
Сортировка
От Matthias Lenz
Тема Changing a relation's name in parser stage
Дата
Msg-id 000a01c4369f$14b0af40$9100a8c0@noctuaeeprwinl
обсуждение исходный текст
Ответы Re: Changing a relation's name in parser stage  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Bruno Wolff III
Дата:
Сообщение: Re: RI / foreign key on VIEW
Следующее
От: David Cruz
Дата:
Сообщение: Question about REF / DREF