Well, it only took one day to prove myself wrong: DBD::ASAny does not support the {TYPE} property of a DBI statement handle. (And I consider it a modern database with a recent driver.) Ouch. Not only that, but it's got a bug -- if you try to pass one of the DBI SQL types (e.g., SQL_INTEGER) in with a 'quote' call ( $db->quote("O'Malley", SQL_VARCHAR) ) DBD::ASAny seems to do something naughty to DBI (something with calling type_info) -- created a simple test case and sent it to the author.
Anyway, that just means something that was going to be done later is done now -- you can create a custom 'quote' method which does or does not deal with the DBI SQL type, or can do anything else. I'd love to just use bound parameters for everything, but you run into the same problem because you need to bind a type to them. Plus, some drivers (notably DBD::Sybase) cannot use bound parameters for certain types of data (text/blob stuff). Ack -- do the simple stuff first.
So, all the tests are successful now for three databases: MySQL, Sybase ASE and Sybase ASA. I'd like to get Postgres on a machine here shortly, and I've got some devel versions of Oracle and DB2 here as well, but those last two require a time investment which I simply don't have right now. Interbase is another good one to throw in the mix.
Still trying to get installation procedures working easily and well -- OpenInteract comes with its own simple packaging system, so that you can develop a package, run a command and put the necessary stuff into a tarball and send it to someone else, who can run a command on the tarball and install it fairly simply. ('it' in this case means the data object configuration, module configuration, initial data and security, page handlers, rulesets, etc.) Again: trying to start simply. The XP book notes that programmers are trained to try and to anticipate future problems and design for them rather than just design for today. Of course, it notes, many times the problems you anticipate never occur, so that design was wasted. Issues with reusability discussed recently on here seem pertinent, but my sleep-fogged brain can't quite draw the line between them.
I wonder: when people measure code in terms of lines, do they include in-file documentation (such as POD) with that?
(Originally posted elsewhere)