From: tjhunt Date: Fri, 10 Apr 2009 09:33:26 +0000 (+0000) Subject: lib/dml: new compatibility method sql_cast_2signed for when MySQL thinks that 1 ... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=adff97c5050021ca9d620133d47a383ecd017db0;p=moodle.git lib/dml: new compatibility method sql_cast_2signed for when MySQL thinks that 1 * -1 = 18446744073709551615 --- diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php index 72ef93c27b..a60884849a 100644 --- a/lib/dml/moodle_database.php +++ b/lib/dml/moodle_database.php @@ -1518,6 +1518,19 @@ abstract class moodle_database { return ' ' . $fieldname . ' '; } + /** + * Returns the SQL to be used in order to an UNSIGNED INTEGER column to SIGNED. + * + * (Only MySQL needs this. MySQL things that 1 * -1 = 18446744073709551615 + * if the 1 comes from an unsigned column). + * + * @param string fieldname the name of the field to be cast + * @return string the piece of SQL code to be used in your statement. + */ + public function sql_cast_2signed($fieldname) { + return ' ' . $fieldname . ' '; + } + /** * Returns the SQL text to be used to compare one TEXT (clob) column with * one varchar column, because some RDBMS doesn't support such direct diff --git a/lib/dml/mysqli_adodb_moodle_database.php b/lib/dml/mysqli_adodb_moodle_database.php index 4c010c84df..588d4e99bf 100644 --- a/lib/dml/mysqli_adodb_moodle_database.php +++ b/lib/dml/mysqli_adodb_moodle_database.php @@ -291,6 +291,10 @@ class mysqli_adodb_moodle_database extends adodb_moodle_database { return $positivematch ? 'REGEXP' : 'NOT REGEXP'; } + public function sql_cast_2signed($fieldname) { + return ' CAST(' . $fieldname . ' AS SIGNED) '; + } + /** * Import a record into a table, id field is required. * Basic safety checks only. Lobs are supported. diff --git a/lib/dml/mysqli_native_moodle_database.php b/lib/dml/mysqli_native_moodle_database.php index 48b2494fcb..c65662e9e7 100644 --- a/lib/dml/mysqli_native_moodle_database.php +++ b/lib/dml/mysqli_native_moodle_database.php @@ -905,6 +905,10 @@ class mysqli_native_moodle_database extends moodle_database { return $positivematch ? 'REGEXP' : 'NOT REGEXP'; } + public function sql_cast_2signed($fieldname) { + return ' CAST(' . $fieldname . ' AS SIGNED) '; + } + /// session locking public function session_lock_supported() { return true;