From 5870a746726f87b46b1518aabe00aec3b9f6ab7e Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Wed, 25 Feb 2015 16:01:37 +0300 Subject: [PATCH] Added Schema::DOUBLE to represent ANSI SQL Double Precision --- extensions/gii/generators/crud/Generator.php | 2 ++ extensions/gii/generators/model/Generator.php | 1 + framework/db/Schema.php | 1 + framework/db/cubrid/QueryBuilder.php | 1 + framework/db/cubrid/Schema.php | 4 ++-- framework/db/mssql/QueryBuilder.php | 1 + framework/db/mssql/Schema.php | 1 + framework/db/mysql/QueryBuilder.php | 1 + framework/db/mysql/Schema.php | 2 +- framework/db/oci/QueryBuilder.php | 1 + framework/db/pgsql/QueryBuilder.php | 1 + framework/db/pgsql/Schema.php | 4 ++-- framework/db/sqlite/QueryBuilder.php | 1 + framework/db/sqlite/Schema.php | 2 +- tests/unit/framework/db/QueryBuilderTest.php | 5 +++++ 15 files changed, 22 insertions(+), 6 deletions(-) diff --git a/extensions/gii/generators/crud/Generator.php b/extensions/gii/generators/crud/Generator.php index 647401bbd4..72c94a1b05 100644 --- a/extensions/gii/generators/crud/Generator.php +++ b/extensions/gii/generators/crud/Generator.php @@ -317,6 +317,7 @@ class Generator extends \yii\gii\Generator $types['boolean'][] = $column->name; break; case Schema::TYPE_FLOAT: + case Schema::TYPE_DOUBLE: case Schema::TYPE_DECIMAL: case Schema::TYPE_MONEY: $types['number'][] = $column->name; @@ -405,6 +406,7 @@ class Generator extends \yii\gii\Generator case Schema::TYPE_BIGINT: case Schema::TYPE_BOOLEAN: case Schema::TYPE_FLOAT: + case Schema::TYPE_DOUBLE: case Schema::TYPE_DECIMAL: case Schema::TYPE_MONEY: case Schema::TYPE_DATE: diff --git a/extensions/gii/generators/model/Generator.php b/extensions/gii/generators/model/Generator.php index 93cf0c8abc..b0b6c0bdda 100644 --- a/extensions/gii/generators/model/Generator.php +++ b/extensions/gii/generators/model/Generator.php @@ -233,6 +233,7 @@ class Generator extends \yii\gii\Generator $types['boolean'][] = $column->name; break; case Schema::TYPE_FLOAT: + case Schema::TYPE_DOUBLE: case Schema::TYPE_DECIMAL: case Schema::TYPE_MONEY: $types['number'][] = $column->name; diff --git a/framework/db/Schema.php b/framework/db/Schema.php index b0c620ffa7..7eb05cd336 100644 --- a/framework/db/Schema.php +++ b/framework/db/Schema.php @@ -46,6 +46,7 @@ abstract class Schema extends Object const TYPE_INTEGER = 'integer'; const TYPE_BIGINT = 'bigint'; const TYPE_FLOAT = 'float'; + const TYPE_DOUBLE = 'double'; const TYPE_DECIMAL = 'decimal'; const TYPE_DATETIME = 'datetime'; const TYPE_TIMESTAMP = 'timestamp'; diff --git a/framework/db/cubrid/QueryBuilder.php b/framework/db/cubrid/QueryBuilder.php index e0c09c3943..cdfbb98b6b 100644 --- a/framework/db/cubrid/QueryBuilder.php +++ b/framework/db/cubrid/QueryBuilder.php @@ -29,6 +29,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'int', Schema::TYPE_BIGINT => 'bigint', Schema::TYPE_FLOAT => 'float(7)', + Schema::TYPE_DOUBLE => 'double(7)', Schema::TYPE_DECIMAL => 'decimal(10,0)', Schema::TYPE_DATETIME => 'datetime', Schema::TYPE_TIMESTAMP => 'timestamp', diff --git a/framework/db/cubrid/Schema.php b/framework/db/cubrid/Schema.php index 28ea970277..939063b696 100644 --- a/framework/db/cubrid/Schema.php +++ b/framework/db/cubrid/Schema.php @@ -36,8 +36,8 @@ class Schema extends \yii\db\Schema 'decimal' => self::TYPE_DECIMAL, 'float' => self::TYPE_FLOAT, 'real' => self::TYPE_FLOAT, - 'double' => self::TYPE_FLOAT, - 'double precision' => self::TYPE_FLOAT, + 'double' => self::TYPE_DOUBLE, + 'double precision' => self::TYPE_DOUBLE, 'monetary' => self::TYPE_MONEY, // Date/Time data types 'date' => self::TYPE_DATE, diff --git a/framework/db/mssql/QueryBuilder.php b/framework/db/mssql/QueryBuilder.php index 8f0d19cc73..12c8485388 100644 --- a/framework/db/mssql/QueryBuilder.php +++ b/framework/db/mssql/QueryBuilder.php @@ -29,6 +29,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'int', Schema::TYPE_BIGINT => 'bigint', Schema::TYPE_FLOAT => 'float', + Schema::TYPE_DOUBLE => 'float', Schema::TYPE_DECIMAL => 'decimal', Schema::TYPE_DATETIME => 'datetime', Schema::TYPE_TIMESTAMP => 'timestamp', diff --git a/framework/db/mssql/Schema.php b/framework/db/mssql/Schema.php index dc7adabe9f..4121b74cb5 100644 --- a/framework/db/mssql/Schema.php +++ b/framework/db/mssql/Schema.php @@ -37,6 +37,7 @@ class Schema extends \yii\db\Schema 'money' => self::TYPE_MONEY, // approximate numbers 'float' => self::TYPE_FLOAT, + 'double' => self::TYPE_DOUBLE, 'real' => self::TYPE_FLOAT, // date and time 'date' => self::TYPE_DATE, diff --git a/framework/db/mysql/QueryBuilder.php b/framework/db/mysql/QueryBuilder.php index 1f93e020a0..f69c5a4a2b 100644 --- a/framework/db/mysql/QueryBuilder.php +++ b/framework/db/mysql/QueryBuilder.php @@ -30,6 +30,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'int(11)', Schema::TYPE_BIGINT => 'bigint(20)', Schema::TYPE_FLOAT => 'float', + Schema::TYPE_DOUBLE => 'double', Schema::TYPE_DECIMAL => 'decimal(10,0)', Schema::TYPE_DATETIME => 'datetime', Schema::TYPE_TIMESTAMP => 'timestamp', diff --git a/framework/db/mysql/Schema.php b/framework/db/mysql/Schema.php index 80e11a1a8c..44b4b0c44d 100644 --- a/framework/db/mysql/Schema.php +++ b/framework/db/mysql/Schema.php @@ -31,7 +31,7 @@ class Schema extends \yii\db\Schema 'integer' => self::TYPE_INTEGER, 'bigint' => self::TYPE_BIGINT, 'float' => self::TYPE_FLOAT, - 'double' => self::TYPE_FLOAT, + 'double' => self::TYPE_DOUBLE, 'real' => self::TYPE_FLOAT, 'decimal' => self::TYPE_DECIMAL, 'numeric' => self::TYPE_DECIMAL, diff --git a/framework/db/oci/QueryBuilder.php b/framework/db/oci/QueryBuilder.php index 8091b8c820..248bab0b24 100644 --- a/framework/db/oci/QueryBuilder.php +++ b/framework/db/oci/QueryBuilder.php @@ -31,6 +31,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'NUMBER(10)', Schema::TYPE_BIGINT => 'NUMBER(20)', Schema::TYPE_FLOAT => 'NUMBER', + Schema::TYPE_DOUBLE => 'NUMBER', Schema::TYPE_DECIMAL => 'NUMBER', Schema::TYPE_DATETIME => 'TIMESTAMP', Schema::TYPE_TIMESTAMP => 'TIMESTAMP', diff --git a/framework/db/pgsql/QueryBuilder.php b/framework/db/pgsql/QueryBuilder.php index df5ad615d3..e07c187ca1 100644 --- a/framework/db/pgsql/QueryBuilder.php +++ b/framework/db/pgsql/QueryBuilder.php @@ -29,6 +29,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'integer', Schema::TYPE_BIGINT => 'bigint', Schema::TYPE_FLOAT => 'double precision', + Schema::TYPE_DOUBLE => 'double precision', Schema::TYPE_DECIMAL => 'numeric(10,0)', Schema::TYPE_DATETIME => 'timestamp(0)', Schema::TYPE_TIMESTAMP => 'timestamp(0)', diff --git a/framework/db/pgsql/Schema.php b/framework/db/pgsql/Schema.php index 37a30c1e98..1fad215844 100644 --- a/framework/db/pgsql/Schema.php +++ b/framework/db/pgsql/Schema.php @@ -59,8 +59,8 @@ class Schema extends \yii\db\Schema 'real' => self::TYPE_FLOAT, 'float4' => self::TYPE_FLOAT, - 'double precision' => self::TYPE_FLOAT, - 'float8' => self::TYPE_FLOAT, + 'double precision' => self::TYPE_DOUBLE, + 'float8' => self::TYPE_DOUBLE, 'decimal' => self::TYPE_DECIMAL, 'numeric' => self::TYPE_DECIMAL, diff --git a/framework/db/sqlite/QueryBuilder.php b/framework/db/sqlite/QueryBuilder.php index 42697206c0..0581371a63 100644 --- a/framework/db/sqlite/QueryBuilder.php +++ b/framework/db/sqlite/QueryBuilder.php @@ -32,6 +32,7 @@ class QueryBuilder extends \yii\db\QueryBuilder Schema::TYPE_INTEGER => 'integer', Schema::TYPE_BIGINT => 'bigint', Schema::TYPE_FLOAT => 'float', + Schema::TYPE_DOUBLE => 'double', Schema::TYPE_DECIMAL => 'decimal(10,0)', Schema::TYPE_DATETIME => 'datetime', Schema::TYPE_TIMESTAMP => 'timestamp', diff --git a/framework/db/sqlite/Schema.php b/framework/db/sqlite/Schema.php index d4ca499512..dc1d625d6b 100644 --- a/framework/db/sqlite/Schema.php +++ b/framework/db/sqlite/Schema.php @@ -38,7 +38,7 @@ class Schema extends \yii\db\Schema 'integer' => self::TYPE_INTEGER, 'bigint' => self::TYPE_BIGINT, 'float' => self::TYPE_FLOAT, - 'double' => self::TYPE_FLOAT, + 'double' => self::TYPE_DOUBLE, 'real' => self::TYPE_FLOAT, 'decimal' => self::TYPE_DECIMAL, 'numeric' => self::TYPE_DECIMAL, diff --git a/tests/unit/framework/db/QueryBuilderTest.php b/tests/unit/framework/db/QueryBuilderTest.php index db76318c98..bd24eea9fa 100644 --- a/tests/unit/framework/db/QueryBuilderTest.php +++ b/tests/unit/framework/db/QueryBuilderTest.php @@ -91,6 +91,11 @@ class QueryBuilderTest extends DatabaseTestCase [Schema::TYPE_FLOAT . ' CHECK (value > 5.6)', 'float CHECK (value > 5.6)'], [Schema::TYPE_FLOAT . '(16,5) CHECK (value > 5.6)', 'float CHECK (value > 5.6)'], [Schema::TYPE_FLOAT . ' NOT NULL', 'float NOT NULL'], + [Schema::TYPE_DOUBLE, 'double'], + [Schema::TYPE_DOUBLE . '(16,5)', 'double'], + [Schema::TYPE_DOUBLE . ' CHECK (value > 5.6)', 'double CHECK (value > 5.6)'], + [Schema::TYPE_DOUBLE . '(16,5) CHECK (value > 5.6)', 'double CHECK (value > 5.6)'], + [Schema::TYPE_DOUBLE . ' NOT NULL', 'double NOT NULL'], [Schema::TYPE_DECIMAL, 'decimal(10,0)'], [Schema::TYPE_DECIMAL . '(12,4)', 'decimal(12,4)'], [Schema::TYPE_DECIMAL . ' CHECK (value > 5.6)', 'decimal(10,0) CHECK (value > 5.6)'],