From: | Gavin Sherry <swm(at)linuxworld(dot)com(dot)au> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Fix for tablename in targetlist |
Date: | 2001-06-12 13:17:09 |
Message-ID: | Pine.LNX.4.21.0106122253030.11264-100000@linuxworld.com.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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?
Gavin
From | Date | Subject | |
---|---|---|---|
Next Message | P. Dwayne Miller | 2001-06-12 13:28:56 | Perl script |
Previous Message | Bob Deblier | 2001-06-12 12:35:43 | Re: dlopen() of libpgsqlodbc.so >= release 7.1 fails on sparc solaris 2.8 |