lib/dml: new compatibility method sql_cast_2signed for when MySQL thinks that 1 * -1 = 18446744073709551615

This commit is contained in:
tjhunt 2009-04-10 09:33:26 +00:00
parent 3efb762e6b
commit adff97c505
3 changed files with 21 additions and 0 deletions

View File

@ -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

View File

@ -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.

View File

@ -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;