> Comments welcome.

Just some random thoughts that came from reading this.

What about Multiple result set statements/more_results? (i.e. select * from
foo; select * from bar; or calling stored procs which have multiple
statements within them as per Sybase & SQL*Server, etc)

[snip]

> 
> =head2 Unicode
> 
> Use of Unicode with the DBI is growing rapidly. The DBI could 
> do more to help drivers support Unicode and help applications 
> work with drivers that don't yet support Unicode directly.
> 
> * Define expected behavior for fetching data and binding parameters.
> 
> * Fix 'leaking' of UTF8 flag from one row to the next.

Hmmmm....Am I missing something here, but wouldn't a column that has UTF8
data *always* have UTF8 data within a statement (resetting only between
statements, such as multiple-result-set statements?

> 
> * Provide interfaces to support Unicode issues for XS and 
> pure Perl drivers and applications.

Please! :)

> =head2 Testing
> 
> The DBI has a test suite. Every driver has a test suite.  
> Each is limited in its scope.  The driver test suite is 
> testing for behavior that matches what the driver author 
> thinks the DBI specifies but may be subtly incorrect.  These 
> test suites are poorly maintained because the development 
> cost is relatively high compared to the "return" from a single driver.
> 
[snip]
YES
YES
I'd love one, since DBD::ODBC has to jump through those hoops itself and has
some tests which vary depending upon the connection.  I think it would be *a
good thing* to have generic tests and database specific tests.  Some
advantages, I think, are:

        DBD::ODBC and DBD::ADO testing...generally the same types of issues
crop up where one is "better" than the other right now or neither do the
job.
        DBD::ODBC when connected to Sybase|Sql*Server vs DBD::Sybase.  With
the exception of the bulk API, I'd like them to behave the same way.
        etc.  (yes, lofty, but that's the goal, isn't it :)

[snip]
> 
> * The popular fetchrow_hashref() method is many times slower than
> fetchrow_arrayref() because it has to re-get the names of the 
> fields each time. A $h->{FetchHashReuse} attribute would 
> allow the same hash to be reused each time making 
> fetchrow_hashref() about the same speed as fetchrow_arrayref().

Why does it have to re-get the names each time?  Why not tie the names in
with the "more_results" functionality?

[snip]

> 
> The goal is not to fully parse the SQL and rewrite it in a 
> different dialect.  That's well beyond the scope of the DBI 
> and should be left to layered modules.  However, a simple 
> token rewriting mechanism for five comment styles, two 
> quoting styles, four placeholder styles, plus the ODBC "{foo 
> ...}" escape syntax is sufficient to significantly raise the 
> level of SQL portability.

Yes!

> 
> * Another major problem area is date/time formatting.  Since 
> version 1.41 the DBI has defined a way to express that dates 
> should be fetched in SQL standard date format (YYYY-MM-DD).  
> However it requires the
> bind_col() method to be called on applicable columns.  This 
> is one example of the more general case where bind_col() 
> needs to be called with particular attributes on all columns 
> of a particular type.
> 
> A mechanism is needed whereby an application can specify 
> default bind_col() attributes for each column type. So with a 
> single step all DATE type columns, for example, can be set to 
> be returned in the standard format.

Double YES!

> 
> * Integration with the Perl debugger would make it simpler to 
> perform actions on a per-handle basis (such as breakpoint on 
> execute, breakpoint on error).

Very cool!  Esp with threads :)

[snip]
> 
> 
> =head2 Parrot and Perl 6
> 
[snip]
> 
> (The project stalled, due to Parrot not having key 
> functionality at the time, and has yet to be restarted.)

Does Parrot yet have the support we need?  If so, I must have missed it.

> 
> The bulk of the DBI code actually exists in base classes 
> 'behind' the driver API.  The method dispatcher code that 
> Perl applications interface with is relatively small.
> 
> Each language targeting Parrot would implement their own 
> small language-specific dispatcher over the Parrot DBDI interface.
> 
> A "big win" here is that a much wider community of developers 
> share the same database drivers and so the benefits of the 
> Open Source model are magnified.
> 
> The bulk of the work will be translating the C and Perl base 
> class code into Parrot PIR or a suitable language that generates PIR.

Yech,  I mean Yep. :)

Regards,

Jeff

Reply via email to