Commit 5f5c024b authored by Dries's avatar Dries

- Patch #515310 by Josh Waihi, marcvangend: inserting >PHP_INT_MAX into...

- Patch #515310 by Josh Waihi, marcvangend: inserting >PHP_INT_MAX into BIGINT fails on PostgreSQL.
parent 75442c96
......@@ -17,6 +17,10 @@ public function __construct() {
'function' => 'checkEncoding',
'arguments' => array(),
);
$this->tasks[] = array(
'function' => 'checkPHPVersion',
'arguments' => array(),
);
$this->tasks[] = array(
'function' => 'initializeDatabase',
'arguments' => array(),
......@@ -50,6 +54,34 @@ protected function checkEncoding() {
}
}
/**
* Check PHP version.
*
* There is a bug in PHP versions < 5.2.11 and < 5.3.1 that prevents
* PostgreSQL from inserting integer values into numeric columns that exceed
* the PHP_INT_MAX value (value varies dependant on 32 or 64 bit CPU).
*/
function checkPHPVersion() {
try {
$txn = db_transaction();
db_query("CREATE TABLE test_php_version ( test_int INT NOT NULL )");
// See http://bugs.php.net/bug.php?id=48924 as to why this query may
// fail. The error will throw an Exception so there is no need to test to
// see if the row inserted or not.
db_query("INSERT INTO test_php_version ( test_int ) VALUES (:big_int)", array(':big_int' => PHP_INT_MAX + 1));
db_query("DROP TABLE test_php_version");
$this->pass(st('PHP is at the correct version to run on PostgreSQL.'));
}
catch (Exception $e) {
// Failing is not fatal but the user should still be warned of the
// limitations of running PostgreSQL on the current version of PHP.
$text = 'The version of PHP you are using has known issues with PostgreSQL. You can see more at ';
$text .= l('http://drupal.org/node/515310', 'http://drupal.org/node/515310') . '. ';
$text .= 'We suggest you upgrade PHP to 5.2.11, 5.3.1 or greater. Failing to do so may result in serious data corruption later.';
drupal_set_message(st($text), 'warning');
}
}
/**
* Make PostgreSQL Drupal friendly.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment