Notes on some other issues below, here's my matrix:

DBD::CSV & DBD::AnyData
1. not quite sure what you mean
2. yes, but when I add support for functions in select, they will be used for values eg. SELECT colA - ? AS cost
3. currently yes, but next release will allow placeholders for heterogeneous data sources eg.


$dbh->prepare("INSET INTO [EMAIL PROTECTED] SELECT col FROM [EMAIL PROTECTED]",undef,$dbh1,$dbh2);

and kldugey subquieries

$dbh->prepare("SELECT col FROM ?",undef,$other_sth]);

and even

$dbh->prepare("SELECT col1 FROM ?",undef,[ [1,"hoopla",7],[2,"boomba",9] ]);

But those are too odd to be of much use with other DBDs :-).

4 no
5 yes
6 no (no quotes allowed around ?, I think that holds for all DBDs?
7 no
8 SQL syntax errors are recognized at prepare time; other errors of validation (e.g. table has syntactically valid name but doesn't exist for a SELECT) are at execute time
9 no
10 see answer to #3, those kinds of data_source placeholders will be supported in explicit joins (which are already supported to a degree)


Comments - supports SQL style -- and C style /* */ and next version perl style #

Another thing to consider is what is accepted as a delimited identifier delimiter. Most use the standard " but ODBC-Access accepts square brackets. Even more annoying is MySQL which (someone correct me if I'm wrong) accepts only backticks (ew) unless the daemon itslef is started with an --ansi flag, in which case it accepts either backticks or double quotes. So you don't know just from the driver name which is going to be accepted (ew). Some drivers like XBase don't accept quoted identifiers at all. SQLite, MySQL, and ODBC-Access all accept delimited identifiers but treat them case INsensitively!

There's also issues with the characters used to delimit values (single quote is of course the standard, but ...)

I could go on. I've got a testing module DBIx::SQLtest almost ready for prime time which, combined with some test cases I am developing can show these kinds of differences for all installed drivers on a machine (how they actually perform with the statements, not how their get_info says they perform if they even have a get_info).

--
Jeff




Reply via email to