Tim Bunce wrote: > > On Thu, Feb 07, 2002 at 11:13:22AM +0100, Steffen Goeldner wrote:
> > + sub sql_identifier_quote_char { > > + my $dbh = shift; > > + my $sth = $dbh->func('adSchemaDBInfoLiterals','OpenSchema'); > > + while ( my $row = $sth->fetch ) { > > + return $row->[1] if $row->[0] eq 'QUOTE'; # XXX QUOTE_PREFIX, >QUOTE_SUFFIX > > + } > > + return undef; > > + } > > Probably need a $sth->finish in there. Ok. Or, I'm thinking about a method ado_schema_dbinfo_literal(), caching all data of the adSchemaDBInfoLiterals pseudo-table, ... Attached are some results for the MSDAORA and Jet Provider. > > + sub sql_keywords { > > + my $dbh = shift; > > + my $sth = $dbh->func('adSchemaDBInfoKeywords','OpenSchema'); > > + my @Keywords = (); > > + while ( my $row = $sth->fetch ) { > > + push @Keywords, $row->[0]; > > + } > > + return join ',', @Keywords; > > + } > > Or maybe: > return join ',', @{ $dbh->selectcol_arrayref($sth)||[] }; It doesn't work. It would work if I drop the execute() in selectcol_arrayref() ... ??? > > + %info = ( > > + 22 => \&sql_concat_null_behavior # SQL_CONCAT_NULL_BEHAVIOR > > + , 6 => 'DBD/ADO.pm' # SQL_DRIVER_NAME # XXX > > Maybe $INC{"DBD/ADO.pm"} instead. Ok. > > --- DBD-ADO-2.4.02/lib/DBD/ADO.pm Wed Feb 06 20:20:22 2002 > > > > + sub get_info { > > + my($dbh, $info_type) = @_; > > + require DBD::ADO::GetInfo; > > + if ( exists $DBD::ADO::GetInfo::odbc2ado{$info_type} ) { > > int($info_type) like: Sorry, I forgot that. Steffen
MSDAORA ------- ADO\OpenSchema adSchemaDBInfoLiterals Literal Literal Invalid Invalid Literal Supported Maxlen Name Value Chars Starting Chars ------------------------ ------- ------- -------- ------- --------- ---------- BINARY_LITERAL 1 1 4000 CATALOG_NAME 2 1 4294967295 CATALOG_SEPARATOR @ 3 1 1 CHAR_LITERAL 4 1 4000 COLUMN_ALIAS 5 1 30 COLUMN_NAME 6 1 30 CORRELATION_NAME 7 1 30 CURSOR_NAME 8 1 30 ESCAPE_PERCENT \% 9 1 2 ESCAPE_UNDERSCORE \_ 10 1 2 INDEX_NAME 11 1 30 LIKE_PERCENT % 12 1 1 LIKE_UNDERSCORE _ 13 1 1 PROCEDURE_NAME 14 1 61 SCHEMA_NAME 16 1 30 TABLE_NAME 17 1 30 TEXT_COMMAND 18 1 4294967295 USER_NAME 19 1 30 VIEW_NAME 20 1 30 QUOTE " 15 1 1 QUOTE_SUFFIX " 28 1 1 SCHEMA_SEPARATOR . 27 1 1 Microsoft.Jet.OLEDB.4.0 ----------------------- ADO\OpenSchema adSchemaDBInfoLiterals Literal Literal Invalid Invalid Literal Supported Maxlen Name Value Chars Starting Chars ------------------------ ------- ------- -------- ------- --------- ---------- BINARY_LITERAL 1 1 255 CHAR_LITERAL .!`[] 4 1 255 COLUMN_ALIAS .!`[] 5 1 64 COLUMN_NAME .!`[] 6 1 64 ESCAPE_PERCENT [ 9 1 1 ESCAPE_UNDERSCORE [ 10 1 1 ESCAPE_PERCENT_SUFFIX ] 29 1 1 ESCAPE_UNDERSCORE_SUFFIX ] 30 1 1 INDEX_NAME .!`[] 11 1 64 LIKE_PERCENT % 12 1 1 LIKE_UNDERSCORE _ 13 1 1 PROCEDURE_NAME .!`[] 14 1 64 TABLE_NAME .!`[] 17 1 64 TEXT_COMMAND .!`[] 18 1 4294967295 QUOTE ` 15 1 1 QUOTE_SUFFIX ` 28 1 1