diff --git a/lib/dml/pgsql_native_moodle_database.php b/lib/dml/pgsql_native_moodle_database.php index 9fa697f2a03..b19e4a7eda5 100644 --- a/lib/dml/pgsql_native_moodle_database.php +++ b/lib/dml/pgsql_native_moodle_database.php @@ -415,7 +415,7 @@ class pgsql_native_moodle_database extends moodle_database { $info->scale = null; $info->not_null = ($rawcolumn->attnotnull === 't'); if ($info->has_default) { - $info->default_value = $rawcolumn->adsrc; + $info->default_value = trim($rawcolumn->adsrc, '()'); } else { $info->default_value = null; } @@ -433,7 +433,7 @@ class pgsql_native_moodle_database extends moodle_database { $info->not_null = ($rawcolumn->attnotnull === 't'); $info->has_default = ($rawcolumn->atthasdef === 't'); if ($info->has_default) { - $info->default_value = $rawcolumn->adsrc; + $info->default_value = trim($rawcolumn->adsrc, '()'); } else { $info->default_value = null; } @@ -451,7 +451,7 @@ class pgsql_native_moodle_database extends moodle_database { $info->not_null = ($rawcolumn->attnotnull === 't'); $info->has_default = ($rawcolumn->atthasdef === 't'); if ($info->has_default) { - $info->default_value = $rawcolumn->adsrc; + $info->default_value = trim($rawcolumn->adsrc, '()'); } else { $info->default_value = null; } diff --git a/lib/dml/simpletest/testdml.php b/lib/dml/simpletest/testdml.php index 6beea2aab25..8ce01e3b33b 100644 --- a/lib/dml/simpletest/testdml.php +++ b/lib/dml/simpletest/testdml.php @@ -729,6 +729,9 @@ class dml_test extends UnitTestCase { $table->add_field('onenum', XMLDB_TYPE_NUMBER, '10,2', null, null, null, 200); $table->add_field('onefloat', XMLDB_TYPE_FLOAT, '10,2', null, null, null, 300); $table->add_field('anotherfloat', XMLDB_TYPE_FLOAT, null, null, null, null, 400); + $table->add_field('negativedfltint', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '-1'); + $table->add_field('negativedfltnumber', XMLDB_TYPE_NUMBER, '10', null, XMLDB_NOTNULL, null, '-2'); + $table->add_field('negativedfltfloat', XMLDB_TYPE_FLOAT, '10', null, XMLDB_NOTNULL, null, '-3'); $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); $dbman->create_table($table); @@ -793,6 +796,19 @@ class dml_test extends UnitTestCase { $this->assertEqual(400.0, $field->default_value); $this->assertFalse($field->not_null); + // Test negative defaults in numerical columns + $field = $columns['negativedfltint']; + $this->assertTrue($field->has_default); + $this->assertEqual(-1, $field->default_value); + + $field = $columns['negativedfltnumber']; + $this->assertTrue($field->has_default); + $this->assertEqual(-2, $field->default_value); + + $field = $columns['negativedfltfloat']; + $this->assertTrue($field->has_default); + $this->assertEqual(-3, $field->default_value); + for ($i = 0; $i < count($columns); $i++) { if ($i == 0) { $next_column = reset($columns);