diff --git a/lib/ddl/tests/ddl_test.php b/lib/ddl/tests/ddl_test.php index 07a4a3fe1a0..c712880fa2d 100644 --- a/lib/ddl/tests/ddl_test.php +++ b/lib/ddl/tests/ddl_test.php @@ -698,6 +698,16 @@ class core_ddl_testcase extends database_driver_testcase { $this->assertSame('N', $columns['onenumber']->meta_type); $this->assertEquals(2.550, $DB->get_field('test_table1', 'onenumber', array(), IGNORE_MULTIPLE)); // Check default has been applied. + // Add one numeric field with scale of 0 and check it. + $field = new xmldb_field('onenumberwith0scale'); + $field->set_attributes(XMLDB_TYPE_NUMBER, '6,0', null, XMLDB_NOTNULL, null, 2); + $dbman->add_field($table, $field); + $this->assertTrue($dbman->field_exists($table, 'onenumberwith0scale')); + $columns = $DB->get_columns('test_table1'); + $this->assertEquals(6, $columns['onenumberwith0scale']->max_length); + // We can not use assertEquals as that accepts null/false as a valid value. + $this->assertSame('0', strval($columns['onenumberwith0scale']->scale)); + // Add one float field and check it (not official type - must work as number). $field = new xmldb_field('onefloat'); $field->set_attributes(XMLDB_TYPE_FLOAT, '6,3', null, XMLDB_NOTNULL, null, 3.550); diff --git a/lib/dml/mssql_native_moodle_database.php b/lib/dml/mssql_native_moodle_database.php index 2ad78aae77a..ec4e983548b 100644 --- a/lib/dml/mssql_native_moodle_database.php +++ b/lib/dml/mssql_native_moodle_database.php @@ -475,7 +475,7 @@ class mssql_native_moodle_database extends moodle_database { } // Scale - $info->scale = $rawcolumn->scale ? $rawcolumn->scale : false; + $info->scale = $rawcolumn->scale; // Prepare not_null info $info->not_null = $rawcolumn->is_nullable == 'NO' ? true : false; diff --git a/lib/dml/oci_native_moodle_database.php b/lib/dml/oci_native_moodle_database.php index 95985f92e56..502a266b157 100644 --- a/lib/dml/oci_native_moodle_database.php +++ b/lib/dml/oci_native_moodle_database.php @@ -565,7 +565,7 @@ class oci_native_moodle_database extends moodle_database { $info->meta_type = 'I'; $info->unique = null; } - $info->scale = null; + $info->scale = 0; } else { //float