From adff97c5050021ca9d620133d47a383ecd017db0 Mon Sep 17 00:00:00 2001 From: tjhunt Date: Fri, 10 Apr 2009 09:33:26 +0000 Subject: [PATCH] lib/dml: new compatibility method sql_cast_2signed for when MySQL thinks that 1 * -1 = 18446744073709551615 --- lib/dml/moodle_database.php | 13 +++++++++++++ lib/dml/mysqli_adodb_moodle_database.php | 4 ++++ lib/dml/mysqli_native_moodle_database.php | 4 ++++ 3 files changed, 21 insertions(+) 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; -- 2.39.5