Thread: Parse statement can fail for unquoted uppercase tablenames

Parse statement can fail for unquoted uppercase tablenames

From
"Wayne Armstrong"
Date:
Hi,
 If I pass the odbc driver a statement that looks like :-
 select * from CALEND_EVENT
 and statement parsing is turned on it may fail if it tries to do a
PGAPI_Columns call using the following SQL:-
select u.nspname, c.relname, a.attname, a.atttypid, t.typname, a.attnum,
a.attlen, a.atttypmod, a.attnotnull, c.relhasrules, c.relkind from pg_namespace
u, pg_class c, pg_attribute a, pg_type t where u.oid = c.relnamespace and (not
a.attisdropped) and c.oid= a.attrelid and a.atttypid = t.oid and (a.attnum > 0)
and c.relname = 'CALEND_EVENT' and u.nspname = 'bacchus' order by u.nspname,
c.relname, attnum.

select * from calend_event
works fine.

So even though the tablename is not quoted (and thus should be folded to
lowercase), the statement may return no rows, cause the columncount returned
from the statement parsing is 0.

Regards,
Wayne


Re: Parse statement can fail for unquoted uppercase tablenames

From
"Wayne Armstrong"
Date:
** Reply to message from "Wayne Armstrong" <wdarmst@bacchus.com.au> on Thu, 10
Apr 2003 14:57:28 +1000

Umm,
 This actually seems to happen when the tablename is qualified ie:-
 select * from BACCHUS.CALEND_EVENT WHERE ....
 The qualifier gets lowercased as it should, the tablename does not.


Regards,
Wayne

> Hi,
>  If I pass the odbc driver a statement that looks like :-
>  select * from CALEND_EVENT
>  and statement parsing is turned on it may fail if it tries to do a
> PGAPI_Columns call using the following SQL:-
> select u.nspname, c.relname, a.attname, a.atttypid, t.typname, a.attnum,
> a.attlen, a.atttypmod, a.attnotnull, c.relhasrules, c.relkind from pg_namespace
> u, pg_class c, pg_attribute a, pg_type t where u.oid = c.relnamespace and (not
> a.attisdropped) and c.oid= a.attrelid and a.atttypid = t.oid and (a.attnum > 0)
> and c.relname = 'CALEND_EVENT' and u.nspname = 'bacchus' order by u.nspname,
> c.relname, attnum.
>
> select * from calend_event
> works fine.
>
> So even though the tablename is not quoted (and thus should be folded to
> lowercase), the statement may return no rows, cause the columncount returned
> from the statement parsing is 0.
>
> Regards,
> Wayne
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)


Re: Parse statement can fail for unquoted uppercase tablenames

From
"Hiroshi Inoue"
Date:
> -----Original Message-----
> From: Wayne Armstrong
>
> ** Reply to message from "Wayne Armstrong"
> <wdarmst@bacchus.com.au> on Thu, 10
> Apr 2003 14:57:28 +1000
>
> Umm,
>  This actually seems to happen when the tablename is qualified ie:-
>  select * from BACCHUS.CALEND_EVENT WHERE ....
>  The qualifier gets lowercased as it should, the tablename does not.

Could you try the lastest snapshot dll at
http://www.geocities.jp/inocchichichi/psqlodbc/ .

regards,
Hiroshi Inoue