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