Changeset 5113

Show
Ignore:
Timestamp:
10/21/08 12:50:05 (9 months ago)
Author:
adrive
Message:

[1.0, 1.1] Fixes #1585: Oracle building model fails due to precision element - precision in number type is now data_length

Location:
branches/1.0
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/1.0/lib/Doctrine/Import/Oracle.php

    r5111 r5113  
    121121    public function listTableColumns($table) 
    122122    { 
    123         $sql    = "SELECT column_name, data_type, data_length, nullable, data_default, data_scale, data_precision FROM all_tab_columns" 
    124                 . " WHERE table_name = '" . $table . "' ORDER BY column_id"; 
     123        $sql    = "SELECT column_name, data_type, " 
     124                . "CASE WHEN data_type = 'NUMBER' THEN data_precision ELSE data_length END AS data_length, " 
     125                . "nullable, data_default, data_scale, data_precision FROM all_tab_columns " 
     126                . "WHERE table_name = '" . $table . "' ORDER BY column_id"; 
    125127 
    126128        $result = $this->conn->fetchAssoc($sql); 
     
    143145               'default'    => $val['data_default'], 
    144146               'length'     => $val['data_length'], 
    145                'precision'  => $val['data_precision'], 
    146147               'scale'      => $val['scale'], 
    147148            ); 
     
    187188            $result = array_change_key_case($result, CASE_LOWER); 
    188189            $relations[] = array('table'   => $result['referenced_table_name'], 
    189                                  'local'   => $result['column_name'], 
     190                                 'local'   => $result['local_column_name'], 
    190191                                 'foreign' => $result['referenced_column_name']); 
    191192        } 
  • branches/1.0/tests/Import/OracleTestCase.php

    r5111 r5113  
    4545        $this->import->listTableColumns('table'); 
    4646 
    47         $q = "SELECT column_name, data_type, data_length, nullable, data_default, data_scale, data_precision FROM all_tab_columns WHERE table_name = 'table' ORDER BY column_id"; 
     47        $q = "SELECT column_name, data_type, CASE WHEN data_type = 'NUMBER' THEN data_precision ELSE data_length END AS data_length, nullable, data_default, data_scale, data_precision FROM all_tab_columns WHERE table_name = 'table' ORDER BY column_id"; 
    4848 
    4949        $this->assertEqual($this->adapter->pop(), $q);