Re: Fix for tablename in targetlist
От | Bruce Momjian |
---|---|
Тема | Re: Fix for tablename in targetlist |
Дата | |
Msg-id | 200106121459.f5CExkr08996@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: Fix for tablename in targetlist (Gavin Sherry <swm@linuxworld.com.au>) |
Ответы |
Re: Fix for tablename in targetlist
|
Список | pgsql-hackers |
> Bruce, > > On Fri, 18 May 2001, Bruce Momjian wrote: > > > We have on the TODO list: > > > > * SELECT pg_class FROM pg_class generates strange error > > > > It passes the tablename as targetlist all the way to the executor, where > > it throws an error about Node 704 unkown. > > The problem is caused in transformIdent() (parse_expr.c): > > if (ident->indirection == NIL && > refnameRangeTableEntry(pstate, ident->name) != NULL) > { > ident->isRel = TRUE; > result = (Node *) ident; > } > > It is pretty clear what is happening here. ident->name is a member of > range table so the type of ident is not changed, as would be the case with > an attribute. Commenting this code out means that result = NULL and the > error 'Attribute 'pg_class' not found'. This, in my opinion, is the > correct error to be generated. Moreover, I cannot find any flow on effect > which may result from removing this code -- regression tests all > pass. From what I can tell, all transformations of Nodes which are of type > Ident should have already been transformed anyway -- have I over looked > something? I am confused. I thought I fixed this about a month ago. Do we need more coded added here? You are suggesting throwing an error as soon as an idend appears as a relation. I don't know enough about the code to be sure that is OK. I realize the regression tests pass. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: