in reply to Re: Re: Metadata with Recordset
in thread Metadata with Recordset

How does this method handle the case of the fields? The SQL standard does not specify whether field names are stored in lower, mixed, or upper case and each DBMS has its own choice. (This is how they're stored and returned from a query , not how they're used in SQL which must be case insensitive unless quoted). DBI makes this explicit with (and recommends the use of) $sth->{NAME_lc} and $sth->{NAME_uc} rather than the kind of generic query that Recordset seems to use. Also, presumbably Recordset has equivalents of DBI's table_info() and type_info(), etc. for other kinds of metadata?

Replies are listed 'Best First'.
Re: Re: Re: Re: Metadata with Recordset
by princepawn (Parson) on Oct 12, 2003 at 02:44 UTC
    How does this method handle the case of the fields?
    It depends on how you set !PreserveCase when you called it.
    # line 231 of DBIx::Database my $fields = $sth?$sth -> FETCH ($PreserveCase?'NAME':'NAME_lc'):[] +;
    The SQL standard does not specify whether field names are stored in lower, mixed, or upper case and each DBMS has its own choice. (This is how they're stored and returned from a query , not how they're used in SQL which must be case insensitive unless quoted)
    Actually Oracle always returns field names in uppercase

    DBI makes this explicit with (and recommends the use of) $sth->{NAME_lc} and $sth->{NAME_uc} rather than the kind of generic query that Recordset seems to use.
    After looking at line 231, you _know_ what Recordset does. And you know that !PreserveCase allows one to force lowercase or take the field name as it is... it does not appear to support NAME_uc

    Carter's compass: I know I'm on the right track when by deleting something, I'm adding functionality.