MDL-29415 xmldb - fix get_columns() in oracle to get char based lengths + test

This commit is contained in:
Eloy Lafuente (stronk7)
2011-09-19 00:34:10 +02:00
parent 9cfaebbd0e
commit 018213bed2
2 changed files with 6 additions and 2 deletions
+5 -2
View File
@@ -477,8 +477,11 @@ class oci_native_moodle_database extends moodle_database {
$this->columns[$table] = array();
$sql = "SELECT CNAME, COLTYPE, WIDTH, SCALE, PRECISION, NULLS, DEFAULTVAL
FROM COL
// We give precedence to CHAR_LENGTH for VARCHAR2 columns over WIDTH because the former is always
// BYTE based and, for cross-db operations, we want CHAR based results. See MDL-29415
$sql = "SELECT CNAME, COLTYPE, nvl(CHAR_LENGTH, WIDTH) AS WIDTH, SCALE, PRECISION, NULLS, DEFAULTVAL
FROM COL c
LEFT JOIN USER_TAB_COLUMNS u ON (u.TABLE_NAME = c.TNAME AND u.COLUMN_NAME = c.CNAME AND u.DATA_TYPE = 'VARCHAR2')
WHERE TNAME = UPPER('{" . $table . "}')
ORDER BY COLNO";
+1
View File
@@ -751,6 +751,7 @@ class dml_test extends UnitTestCase {
$field = $columns['name'];
$this->assertEqual('C', $field->meta_type);
$this->assertFalse($field->auto_increment);
$this->assertEqual(255, $field->max_length);
$this->assertTrue($field->has_default);
$this->assertIdentical('lala', $field->default_value);
$this->assertFalse($field->not_null);