? includes/database/pgsql/.svn Index: includes/database/pgsql/install.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database/pgsql/install.inc,v retrieving revision 1.12 diff -u -p -r1.12 install.inc --- includes/database/pgsql/install.inc 13 Nov 2010 23:07:16 -0000 1.12 +++ includes/database/pgsql/install.inc 14 Nov 2010 09:52:49 -0000 @@ -22,6 +22,10 @@ class DatabaseTasks_pgsql extends Databa 'arguments' => array(), ); $this->tasks[] = array( + 'function' => 'checkBinaryOutput', + 'arguments' => array(), + ); + $this->tasks[] = array( 'function' => 'initializeDatabase', 'arguments' => array(), ); @@ -76,6 +80,27 @@ class DatabaseTasks_pgsql extends Databa } /** + * Check Binary Output. + * + * Unserializing does not work on Postgresql 9 when bytea_output is 'hex'. + */ + function checkBinaryOutput() { + if (version_compare(DatabaseConnection::getConnection()->version(), '9') >= 0) { + // We have Postgresql 9 + $bytea_output = db_query('SHOW bytea_output')->fetchField(); + if ($bytea_output != 'escape') { + $replacements = array( + '%setting' => 'bytea_output', + '%currentvalue' => $bytea_output, + '%neededvalue' => 'escape', + '%query' => "ALTER DATABASE your_database SET bytea_output = 'escape';", + ); + $this->fail(st("The %setting setting is currently set to '%currentvalue', but needs to be '%neededvalue'. Change this by running %query", $replacements); + } + } + } + + /** * Make PostgreSQL Drupal friendly. */ function initializeDatabase() {