From 1f0d2ab7d9304d993ebee3445f5d5a52aa36084b Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 24 Jul 2014 20:51:58 -0400 Subject: [PATCH] Fixed Oracle DB type mapping. (Fixes #4) --- framework/db/oci/QueryBuilder.php | 22 ++++++++++++++++++++++ framework/db/oci/Schema.php | 16 ---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/framework/db/oci/QueryBuilder.php b/framework/db/oci/QueryBuilder.php index 7f8037aaba..40db9172b1 100644 --- a/framework/db/oci/QueryBuilder.php +++ b/framework/db/oci/QueryBuilder.php @@ -18,6 +18,28 @@ use yii\db\Connection; */ class QueryBuilder extends \yii\db\QueryBuilder { + /** + * @var array mapping from abstract column types (keys) to physical column types (values). + */ + public $typeMap = [ + Schema::TYPE_PK => 'NUMBER(10) NOT NULL PRIMARY KEY', + Schema::TYPE_BIGPK => 'NUMBER(20) NOT NULL PRIMARY KEY', + Schema::TYPE_STRING => 'VARCHAR2(255)', + Schema::TYPE_TEXT => 'CLOB', + Schema::TYPE_SMALLINT => 'NUMBER(5)', + Schema::TYPE_INTEGER => 'NUMBER(10)', + Schema::TYPE_BIGINT => 'NUMBER(20)', + Schema::TYPE_FLOAT => 'NUMBER', + Schema::TYPE_DECIMAL => 'NUMBER', + Schema::TYPE_DATETIME => 'TIMESTAMP', + Schema::TYPE_TIMESTAMP => 'TIMESTAMP', + Schema::TYPE_TIME => 'TIMESTAMP', + Schema::TYPE_DATE => 'DATE', + Schema::TYPE_BINARY => 'BLOB', + Schema::TYPE_BOOLEAN => 'NUMBER(1)', + Schema::TYPE_MONEY => 'NUMBER(19,4)', + ]; + private $_sql; /** diff --git a/framework/db/oci/Schema.php b/framework/db/oci/Schema.php index ab4cde118d..21abe2e3ce 100644 --- a/framework/db/oci/Schema.php +++ b/framework/db/oci/Schema.php @@ -15,26 +15,11 @@ use yii\db\ColumnSchema; /** * Schema is the class for retrieving metadata from an Oracle database * - * @todo mapping from physical types to abstract types - * * @author Qiang Xue * @since 2.0 */ class Schema extends \yii\db\Schema { - const TYPE_PK = 'NUMBER(10) NOT NULL PRIMARY KEY'; - const TYPE_STRING = 'VARCHAR2(255)'; - const TYPE_TEXT = 'CLOB'; - const TYPE_INTEGER = 'NUMBER(10)'; - const TYPE_FLOAT = 'NUMBER'; - const TYPE_DECIMAL = 'NUMBER'; - const TYPE_DATETIME = 'TIMESTAMP'; - const TYPE_TIMESTAMP = 'TIMESTAMP'; - const TYPE_TIME = 'TIMESTAMP'; - const TYPE_DATE = 'DATE'; - const TYPE_BINARY = 'BLOB'; - const TYPE_BOOLEAN = 'NUMBER(1)'; - const TYPE_MONEY = 'NUMBER(19,4)'; /** * @inheritdoc */ @@ -172,7 +157,6 @@ EOD; * @internal param \yii\db\TableSchema $table ->name the table schema * @return string whether the sequence exists */ - protected function getTableSequenceName($tablename){ $seq_name_sql="select ud.referenced_name as sequence_name