====== List of Drivers To Be Removed / Merged ====== ===== Full Removal ===== ^ Driver ^ Driver / Children ^ Reason ^ | [[v5:database:ADO]] | ado, ado_access, ado_mssql, ado5 | Obsolete | | [[v5:database:Frontbase]] | fbsql | No PHP drivers since V4 | | [[v5:database:Informix]] | informix, informix_72 | Database End-Of-Life / No PHP 7 Drivers | | [[v5:database:mysql#mysqlt|mysqlt]] | mysqlt, mysqlpo | Superseded by mysqli | | [[v5:database:microsoft_sql_server#mssql]] | mssql, mssql_n, mssqlpo | Driver End Of Life / No PHP7 drivers | | [[v5:database:Netezza]] | netezza | Database End-Of-Life 2019 | | [[v5:database:ODBTP]] | odbtp, odbtp_unicode | Obsolete | | [[v5:database:text|Plain Text]] | text | Incompatible with later versions of PHP | | [[v5:database:proxy]] | proxy | Deprecated for security reasons, as of ADOdb 5.21.0 | | [[v5:database:sap_ads|SAP ADS]] | ads | Database End-Of-Life / No PHP 7 Drivers | | [[v5:database:sap_ase|SAP ASE]] | sybase, sybase_ase | Database End-Of-Life / No PHP 7 Drivers | | [[v5:database:sap_maxdb|SAP MaxDB]] | sapdb | Database End-Of-Life / No PHP 7 Drivers | | [[v5:database:sap_sqlanywhere|SAP SQL Anywhere]] | sqlanywhere | Dormant / No Active Users | | [[v5:database:visual_foxpro|Visual FoxPro]] | vfp | Obsolete | Occasionally renewed interest in a database may result in a driver being reactivated ===== Partial Removal ===== ^ Driver ^ Children ^ Reason ^ | [[v5:database:ibm_db2|IBM_DB2]] | db2ora, db2oci | Feature handled in rewritten main driver. Use param() for parametisation | | [[v5:database:oracle#oci805]] | oci805 | Written specifically for now obsolete version of oracle | | [[v5:database:oracle#oci8po]] | oci8po | Should be able to roll the minor differences in this driver into the main one | | [[v5:database:oracle#oracle]] | oracle | Obsolete database version | | [[v5:database:odbc#mssql2012ODBC mssql2012]] | odbc_mssql2012 | Make the extended feature of this driver the default in the parent | | [[v5:database:sqlite]] | sqlite3 | merge current version back to **sqlite** | | [[v5:database:postgresql]] | postgres64, postgres7, postgres8, postgres9 | Merge all versions back to **postgres** | | [[v5:database:pdo#mssql|PDO mssql]] | mssql | Obsolete driver | ===== Remaining ===== ^ Old Name ^ New Name ^ Children ^ |access|access|| |db2|db2|| |firebird|firebird| |ldap|ldap|| |mssqlnative|sqlserver|| |mysqli|mysql|| |oci8|oracle|| |odbc|odbc|db2, mssql, oracle| |pdo|pdo|dblib, firebird, mysql, oci8->oracle. pgsql, sqlite, slsrv| |postgres9|postgres|| |sqlite3|sqlite|| ===== The thing about the PDO driver ===== Take, for example, pdo_mysql. This driver is really just the mysql driver. It doesn't really have anything to do with PDO. This is the same for all the PDO drivers. If you were going to make the drivers loadable classes, it would make no sense to have these as extensions of PDO, they should be an extension of the native driver so that they all have access to the already written methods in the native driver. How to link them to the base driver I have no idea. ===== LDAP Driver ===== Isn't really the same thing as all the others. It's useful, but doesnt really fit in with the others. Maybe we should break it off to its own directory or something. ===== ociquercus ===== This seems to have a lot of complicated cursor stuff in it. I think John was a bit of an oracle hacker. would be a shame to lose it but not quite sure what to do with it ===== Directory Structure ===== I think we should break a lot of stuff away from the main directory, perhaps it could match a namespace or something? \adodb \adodb\adodb \adodb\adodb\drivers \adodb\adodb\datadict \adodb\adodb\perf \adodb\adodb\xmlschema \adodb\adodb\memcache \adodb\adodb\errors \adodb\adodb\lang \adodb\session \adodb\activerecord \adodb\time \adodb\other - everything else in subdirectories This would empty the main directory ===== Functions in adodb-lib.inc.php ===== There are a lot of functions in this file, for eaxample ''_adodb_column_sql()''. I've never understood why these are functions and not part of the class. I think we should make them class functions, and if necessary, create some kind of helper functions that calls them. so: function _adodb_column_sql(&$zthis .. becomes ADOconnection::adodbColumnSql