PostgreSQL support ( patch included )
|Reported by:||usleepless||Owned by:|
this is a patch to make WP 2.2.1 PostgreSQL compatible.
to make it work:
- edit wp-includes/wp-db.php add "require_once('mysql2pgsql.php') at the top
- save the attached mysql2pgsql.php to wp-includes
- edit wp-settings.php and remove the MySQL not included warning/die check
- make sure your php doesn't load the mysql client/module
- create a new database ( createdb wordpress ), edit your wp-config.php and complete the wp-installion process
afaik, there are no problems.
this is "a" solution to the multiple database support "problem".
- this patch redefines the mysql_* calls: it would be better to use the PEAR db-wrapper class for example
- this patch manipulates the SQL. stuff can be learned from this though:
- using "SHOW TABLES" to check if WP is already installed is MySQL specific: trying to "SELECT * FROM wp_posts LIMIT 1" is not.
- a couple of queries use the "`" character for no reason whatsoever
- datatypes: some translation will always be necessary ( text/memo fields for example ). but is using "longtext & mediumtext & tinytext" really sensible? or int(11), int(4), bigint(20) and tinyint(1) ?
- almost all of the schema is lowercase: there are some table using capitals for fields containing "ID". let's get rid of them ( this is probably really pg-speficic )
- there are MySQL specific "IGNORE" qualifiers in INSERT statements. what are they good for? let's get rid of them
- in the db-installation procedure, inserts are performed on tables with auto_increment fields, specifying this very field ( wp_categories, wp_post2cat ). trust the auto_increment, remove the values for the auto_increment fields. this confuses pgsql
- SQL_FOUND_ROWS & FOUND_ROWS() is MySQL specific. i have replaced them with dummy's and didn't notice any difference. let's work around this
- MySQL specific LIMIT syntax is used. let's use ISO "LIMIT x OFFSET y".
- there is seemingly useless use of "GROUP BY" in some statements. let's get rid of them (pgsql complains)
- using "!=" is not ISO afaik. let's write "<>" instead
if these suggestions are implemented, WP can be made multiple DB compatible quite easily ( mysql, pgsql, mssql, db2 etc. whatever PHP supports )
i am willing to contribute time & patches to make this work.