diff --git a/src/Adapter/Platform/Sql92.php b/src/Adapter/Platform/Sql92.php index 81b7e0a225..832cf60d4b 100644 --- a/src/Adapter/Platform/Sql92.php +++ b/src/Adapter/Platform/Sql92.php @@ -11,6 +11,13 @@ class Sql92 extends AbstractPlatform { + /** + * Overrides value from AbstractPlatform to use proper escaping for SQL92 + * + * @var string + */ + protected $quoteIdentifierTo = '""'; + /** * {@inheritDoc} */ diff --git a/src/Adapter/Platform/Sqlite.php b/src/Adapter/Platform/Sqlite.php index 9253baba1a..955b13fa67 100644 --- a/src/Adapter/Platform/Sqlite.php +++ b/src/Adapter/Platform/Sqlite.php @@ -16,14 +16,11 @@ class Sqlite extends AbstractPlatform { /** - * {@inheritDoc} - */ - protected $quoteIdentifier = ['"','"']; - - /** - * {@inheritDoc} + * Overrides value from AbstractPlatform to use proper escaping for SQLite + * + * @var string */ - protected $quoteIdentifierTo = '\''; + protected $quoteIdentifierTo = '""'; /** * @var \PDO diff --git a/src/Sql/AbstractSql.php b/src/Sql/AbstractSql.php index f8935ca44e..922a8358ce 100644 --- a/src/Sql/AbstractSql.php +++ b/src/Sql/AbstractSql.php @@ -181,6 +181,8 @@ protected function processExpression( ); } elseif ($type == ExpressionInterface::TYPE_IDENTIFIER) { $values[$vIndex] = $platform->quoteIdentifierInFragment($value); + } elseif ($type == ExpressionInterface::TYPE_IDENTIFIER_ATOMIC) { + $values[$vIndex] = $platform->quoteIdentifier($value); } elseif ($type == ExpressionInterface::TYPE_VALUE) { // if prepareType is set, it means that this particular value must be // passed back to the statement in a way it can be used as a placeholder value diff --git a/src/Sql/Ddl/Column/AbstractTimestampColumn.php b/src/Sql/Ddl/Column/AbstractTimestampColumn.php index e71d3791d4..096a54d7c8 100644 --- a/src/Sql/Ddl/Column/AbstractTimestampColumn.php +++ b/src/Sql/Ddl/Column/AbstractTimestampColumn.php @@ -27,7 +27,7 @@ public function getExpressionData() $params[] = $this->name; $params[] = $this->type; - $types = [self::TYPE_IDENTIFIER, self::TYPE_LITERAL]; + $types = [self::TYPE_IDENTIFIER_ATOMIC, self::TYPE_LITERAL]; if (! $this->isNullable) { $spec .= ' NOT NULL'; diff --git a/src/Sql/Ddl/Column/Column.php b/src/Sql/Ddl/Column/Column.php index 18634194cf..d605fdd78a 100644 --- a/src/Sql/Ddl/Column/Column.php +++ b/src/Sql/Ddl/Column/Column.php @@ -168,7 +168,7 @@ public function getExpressionData() $params[] = $this->name; $params[] = $this->type; - $types = [self::TYPE_IDENTIFIER, self::TYPE_LITERAL]; + $types = [self::TYPE_IDENTIFIER_ATOMIC, self::TYPE_LITERAL]; if (! $this->isNullable) { $spec .= ' NOT NULL'; diff --git a/src/Sql/Ddl/Constraint/AbstractConstraint.php b/src/Sql/Ddl/Constraint/AbstractConstraint.php index d51f762cb5..1115bbb597 100644 --- a/src/Sql/Ddl/Constraint/AbstractConstraint.php +++ b/src/Sql/Ddl/Constraint/AbstractConstraint.php @@ -109,7 +109,7 @@ public function getExpressionData() if ($this->name) { $newSpec .= $this->namedSpecification; $values[] = $this->name; - $newSpecTypes[] = self::TYPE_IDENTIFIER; + $newSpecTypes[] = self::TYPE_IDENTIFIER_ATOMIC; } $newSpec .= $this->specification; @@ -117,7 +117,7 @@ public function getExpressionData() if ($colCount) { $values = array_merge($values, $this->columns); $newSpecParts = array_fill(0, $colCount, '%s'); - $newSpecTypes = array_merge($newSpecTypes, array_fill(0, $colCount, self::TYPE_IDENTIFIER)); + $newSpecTypes = array_merge($newSpecTypes, array_fill(0, $colCount, self::TYPE_IDENTIFIER_ATOMIC)); $newSpec .= sprintf($this->columnSpecification, implode(', ', $newSpecParts)); } diff --git a/src/Sql/Ddl/Index/Index.php b/src/Sql/Ddl/Index/Index.php index a0239089a4..48346a7998 100644 --- a/src/Sql/Ddl/Index/Index.php +++ b/src/Sql/Ddl/Index/Index.php @@ -55,7 +55,7 @@ public function getExpressionData() $colCount = count($this->columns); $values = []; $values[] = $this->name ?: ''; - $newSpecTypes = [self::TYPE_IDENTIFIER]; + $newSpecTypes = [self::TYPE_IDENTIFIER_ATOMIC]; $newSpecParts = []; for ($i = 0; $i < $colCount; $i++) { @@ -66,7 +66,7 @@ public function getExpressionData() } $newSpecParts[] = $specPart; - $newSpecTypes[] = self::TYPE_IDENTIFIER; + $newSpecTypes[] = self::TYPE_IDENTIFIER_ATOMIC; } $newSpec = str_replace('...', implode(', ', $newSpecParts), $this->specification); diff --git a/src/Sql/ExpressionInterface.php b/src/Sql/ExpressionInterface.php index 282b408683..dd2d84c322 100644 --- a/src/Sql/ExpressionInterface.php +++ b/src/Sql/ExpressionInterface.php @@ -12,6 +12,7 @@ interface ExpressionInterface { const TYPE_IDENTIFIER = 'identifier'; + const TYPE_IDENTIFIER_ATOMIC = 'identifier_atomic'; const TYPE_VALUE = 'value'; const TYPE_LITERAL = 'literal'; const TYPE_SELECT = 'select'; diff --git a/test/unit/Sql/Ddl/Column/AbstractLengthColumnTest.php b/test/unit/Sql/Ddl/Column/AbstractLengthColumnTest.php index 4ac3deaf98..1697130b71 100644 --- a/test/unit/Sql/Ddl/Column/AbstractLengthColumnTest.php +++ b/test/unit/Sql/Ddl/Column/AbstractLengthColumnTest.php @@ -41,7 +41,7 @@ public function testGetExpressionData() $column = $this->getMockForAbstractClass('Zend\Db\Sql\Ddl\Column\AbstractLengthColumn', ['foo', 4]); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'INTEGER(4)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'INTEGER(4)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/AbstractPrecisionColumnTest.php b/test/unit/Sql/Ddl/Column/AbstractPrecisionColumnTest.php index f81f7c8a12..59b814f818 100644 --- a/test/unit/Sql/Ddl/Column/AbstractPrecisionColumnTest.php +++ b/test/unit/Sql/Ddl/Column/AbstractPrecisionColumnTest.php @@ -61,7 +61,7 @@ public function testGetExpressionData() $column = $this->getMockForAbstractClass('Zend\Db\Sql\Ddl\Column\AbstractPrecisionColumn', ['foo', 10, 5]); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'INTEGER(10,5)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'INTEGER(10,5)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/BigIntegerTest.php b/test/unit/Sql/Ddl/Column/BigIntegerTest.php index 2c5db38361..c6ec9628aa 100644 --- a/test/unit/Sql/Ddl/Column/BigIntegerTest.php +++ b/test/unit/Sql/Ddl/Column/BigIntegerTest.php @@ -30,7 +30,7 @@ public function testGetExpressionData() { $column = new BigInteger('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'BIGINT'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'BIGINT'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/BinaryTest.php b/test/unit/Sql/Ddl/Column/BinaryTest.php index 33aff543a3..46c70899d8 100644 --- a/test/unit/Sql/Ddl/Column/BinaryTest.php +++ b/test/unit/Sql/Ddl/Column/BinaryTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Binary('foo', 10000000); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'BINARY(10000000)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'BINARY(10000000)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/BlobTest.php b/test/unit/Sql/Ddl/Column/BlobTest.php index 724fb92c00..746761242b 100644 --- a/test/unit/Sql/Ddl/Column/BlobTest.php +++ b/test/unit/Sql/Ddl/Column/BlobTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Blob('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'BLOB'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'BLOB'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/BooleanTest.php b/test/unit/Sql/Ddl/Column/BooleanTest.php index f0000d8fef..c76a07adbe 100644 --- a/test/unit/Sql/Ddl/Column/BooleanTest.php +++ b/test/unit/Sql/Ddl/Column/BooleanTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Boolean('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'BOOLEAN'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'BOOLEAN'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/CharTest.php b/test/unit/Sql/Ddl/Column/CharTest.php index e50a8e31f8..886f2391e5 100644 --- a/test/unit/Sql/Ddl/Column/CharTest.php +++ b/test/unit/Sql/Ddl/Column/CharTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Char('foo', 20); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'CHAR(20)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'CHAR(20)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/ColumnTest.php b/test/unit/Sql/Ddl/Column/ColumnTest.php index 8ec32bcf93..bb37e8e369 100644 --- a/test/unit/Sql/Ddl/Column/ColumnTest.php +++ b/test/unit/Sql/Ddl/Column/ColumnTest.php @@ -109,13 +109,13 @@ public function testGetExpressionData() $column = new Column; $column->setName('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); $column->setNullable(true); self::assertEquals( - [['%s %s', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); @@ -124,7 +124,7 @@ public function testGetExpressionData() [[ '%s %s DEFAULT %s', ['foo', 'INTEGER', 'bar'], - [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL, $column::TYPE_VALUE], + [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL, $column::TYPE_VALUE], ]], $column->getExpressionData() ); diff --git a/test/unit/Sql/Ddl/Column/DateTest.php b/test/unit/Sql/Ddl/Column/DateTest.php index 76671afb29..234f7c00af 100644 --- a/test/unit/Sql/Ddl/Column/DateTest.php +++ b/test/unit/Sql/Ddl/Column/DateTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Date('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'DATE'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'DATE'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/DatetimeTest.php b/test/unit/Sql/Ddl/Column/DatetimeTest.php index e75e950291..a0d00ae88b 100644 --- a/test/unit/Sql/Ddl/Column/DatetimeTest.php +++ b/test/unit/Sql/Ddl/Column/DatetimeTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Datetime('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'DATETIME'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'DATETIME'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/DecimalTest.php b/test/unit/Sql/Ddl/Column/DecimalTest.php index 2699ee15ae..232e62d9dd 100644 --- a/test/unit/Sql/Ddl/Column/DecimalTest.php +++ b/test/unit/Sql/Ddl/Column/DecimalTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Decimal('foo', 10, 5); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'DECIMAL(10,5)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'DECIMAL(10,5)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/FloatingTest.php b/test/unit/Sql/Ddl/Column/FloatingTest.php index a530ea4769..eeed2fa8ca 100644 --- a/test/unit/Sql/Ddl/Column/FloatingTest.php +++ b/test/unit/Sql/Ddl/Column/FloatingTest.php @@ -24,7 +24,7 @@ public function testGetExpressionData() [[ '%s %s NOT NULL', ['foo', 'FLOAT(10,5)'], - [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL], + [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL], ]], $column->getExpressionData() ); diff --git a/test/unit/Sql/Ddl/Column/IntegerTest.php b/test/unit/Sql/Ddl/Column/IntegerTest.php index 327294985b..3a306742d1 100644 --- a/test/unit/Sql/Ddl/Column/IntegerTest.php +++ b/test/unit/Sql/Ddl/Column/IntegerTest.php @@ -31,7 +31,7 @@ public function testGetExpressionData() { $column = new Integer('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); @@ -39,7 +39,7 @@ public function testGetExpressionData() $column->addConstraint(new PrimaryKey()); self::assertEquals( [ - ['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]], + ['%s %s NOT NULL', ['foo', 'INTEGER'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]], ' ', ['PRIMARY KEY', [], []], ], diff --git a/test/unit/Sql/Ddl/Column/TextTest.php b/test/unit/Sql/Ddl/Column/TextTest.php index 613c6f1013..7fe1e1bab0 100644 --- a/test/unit/Sql/Ddl/Column/TextTest.php +++ b/test/unit/Sql/Ddl/Column/TextTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Text('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'TEXT'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'TEXT'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/TimeTest.php b/test/unit/Sql/Ddl/Column/TimeTest.php index 91dc56f359..077c3f30ff 100644 --- a/test/unit/Sql/Ddl/Column/TimeTest.php +++ b/test/unit/Sql/Ddl/Column/TimeTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Time('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'TIME'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'TIME'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/TimestampTest.php b/test/unit/Sql/Ddl/Column/TimestampTest.php index fc5974b96c..ba2676fd41 100644 --- a/test/unit/Sql/Ddl/Column/TimestampTest.php +++ b/test/unit/Sql/Ddl/Column/TimestampTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Timestamp('foo'); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'TIMESTAMP'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'TIMESTAMP'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/VarbinaryTest.php b/test/unit/Sql/Ddl/Column/VarbinaryTest.php index d318952454..bb2430bcb1 100644 --- a/test/unit/Sql/Ddl/Column/VarbinaryTest.php +++ b/test/unit/Sql/Ddl/Column/VarbinaryTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Varbinary('foo', 20); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'VARBINARY(20)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'VARBINARY(20)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); } diff --git a/test/unit/Sql/Ddl/Column/VarcharTest.php b/test/unit/Sql/Ddl/Column/VarcharTest.php index 701c8106dc..c0c1b8546f 100644 --- a/test/unit/Sql/Ddl/Column/VarcharTest.php +++ b/test/unit/Sql/Ddl/Column/VarcharTest.php @@ -21,7 +21,7 @@ public function testGetExpressionData() { $column = new Varchar('foo', 20); self::assertEquals( - [['%s %s NOT NULL', ['foo', 'VARCHAR(20)'], [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL]]], + [['%s %s NOT NULL', ['foo', 'VARCHAR(20)'], [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL]]], $column->getExpressionData() ); @@ -30,7 +30,7 @@ public function testGetExpressionData() [[ '%s %s NOT NULL DEFAULT %s', ['foo', 'VARCHAR(20)', 'bar'], - [$column::TYPE_IDENTIFIER, $column::TYPE_LITERAL, $column::TYPE_VALUE], + [$column::TYPE_IDENTIFIER_ATOMIC, $column::TYPE_LITERAL, $column::TYPE_VALUE], ]], $column->getExpressionData() ); diff --git a/test/unit/Sql/Ddl/Constraint/ForeignKeyTest.php b/test/unit/Sql/Ddl/Constraint/ForeignKeyTest.php index d4272742dc..ae1848a65d 100644 --- a/test/unit/Sql/Ddl/Constraint/ForeignKeyTest.php +++ b/test/unit/Sql/Ddl/Constraint/ForeignKeyTest.php @@ -120,8 +120,8 @@ public function testGetExpressionData() 'CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s) ON DELETE %s ON UPDATE %s', ['foo', 'bar', 'baz', 'bam', 'CASCADE', 'SET NULL'], [ - $fk::TYPE_IDENTIFIER, - $fk::TYPE_IDENTIFIER, + $fk::TYPE_IDENTIFIER_ATOMIC, + $fk::TYPE_IDENTIFIER_ATOMIC, $fk::TYPE_IDENTIFIER, $fk::TYPE_IDENTIFIER, $fk::TYPE_LITERAL, diff --git a/test/unit/Sql/Ddl/Constraint/PrimaryKeyTest.php b/test/unit/Sql/Ddl/Constraint/PrimaryKeyTest.php index aef854259e..64c638302d 100644 --- a/test/unit/Sql/Ddl/Constraint/PrimaryKeyTest.php +++ b/test/unit/Sql/Ddl/Constraint/PrimaryKeyTest.php @@ -24,7 +24,7 @@ public function testGetExpressionData() [[ 'PRIMARY KEY (%s)', ['foo'], - [$pk::TYPE_IDENTIFIER], + [$pk::TYPE_IDENTIFIER_ATOMIC], ]], $pk->getExpressionData() ); diff --git a/test/unit/Sql/Ddl/Constraint/UniqueKeyTest.php b/test/unit/Sql/Ddl/Constraint/UniqueKeyTest.php index 3fc8e9b271..d2e4d28035 100644 --- a/test/unit/Sql/Ddl/Constraint/UniqueKeyTest.php +++ b/test/unit/Sql/Ddl/Constraint/UniqueKeyTest.php @@ -24,7 +24,7 @@ public function testGetExpressionData() [[ 'CONSTRAINT %s UNIQUE (%s)', ['my_uk', 'foo'], - [$uk::TYPE_IDENTIFIER, $uk::TYPE_IDENTIFIER], + [$uk::TYPE_IDENTIFIER_ATOMIC, $uk::TYPE_IDENTIFIER_ATOMIC], ]], $uk->getExpressionData() ); diff --git a/test/unit/Sql/Ddl/CreateTableTest.php b/test/unit/Sql/Ddl/CreateTableTest.php index 467994b262..d24024c03d 100644 --- a/test/unit/Sql/Ddl/CreateTableTest.php +++ b/test/unit/Sql/Ddl/CreateTableTest.php @@ -10,7 +10,9 @@ namespace ZendTest\Db\Sql\Ddl; use PHPUnit\Framework\TestCase; +use Zend\Db\Adapter\Platform; use Zend\Db\Sql\Ddl\Column\Column; +use Zend\Db\Sql\Ddl\Index\Index; use Zend\Db\Sql\Ddl\Constraint; use Zend\Db\Sql\Ddl\CreateTable; @@ -162,5 +164,38 @@ public function testGetSqlString() "CREATE TABLE \"foo\" ( \n PRIMARY KEY (\"bar\"),\n PRIMARY KEY (\"bat\") \n)", $ct->getSqlString() ); + + /** + * @link https://github.com/zendframework/zend-db/issues/266 + */ + $ct = new CreateTable('t\'e"s`t'); + $ct->addColumn(new Column('t\'e"s`tCol')); + $ct->addColumn(new Column('t\'e"s`tCol2')); + $ct->addConstraint(new Constraint\PrimaryKey('t\'e"s`tCol')); + $ct->addConstraint(new Index('t\'e"s`tCol2', 't\'e"s`tIndex')); + self::assertEquals( + "CREATE TABLE \"t'e\"\"s`t\" ( \n \"t'e\"\"s`tCol\" INTEGER NOT NULL,\n" . + " \"t'e\"\"s`tCol2\" INTEGER NOT NULL , \n PRIMARY KEY (\"t'e\"\"s`tCol\"),\n" . + " INDEX \"t'e\"\"s`tIndex\"(\"t'e\"\"s`tCol2\") \n)", + $ct->getSqlString() + ); + self::assertEquals( + "CREATE TABLE `t'e\"s``t` ( \n `t'e\"s``tCol` INTEGER NOT NULL,\n" . + " `t'e\"s``tCol2` INTEGER NOT NULL , \n PRIMARY KEY (`t'e\"s``tCol`),\n" . + " INDEX `t'e\"s``tIndex`(`t'e\"s``tCol2`) \n)", + $ct->getSqlString(new Platform\Mysql()) + ); + self::assertEquals( + "CREATE TABLE \"t'e\"\"s`t\" ( \n \"t'e\"\"s`tCol\" INTEGER NOT NULL,\n" . + " \"t'e\"\"s`tCol2\" INTEGER NOT NULL , \n PRIMARY KEY (\"t'e\"\"s`tCol\"),\n" . + " INDEX \"t'e\"\"s`tIndex\"(\"t'e\"\"s`tCol2\") \n)", + $ct->getSqlString(new Platform\Postgresql()) + ); + self::assertEquals( + "CREATE TABLE \"t'e\"\"s`t\" ( \n \"t'e\"\"s`tCol\" INTEGER NOT NULL,\n" . + " \"t'e\"\"s`tCol2\" INTEGER NOT NULL , \n PRIMARY KEY (\"t'e\"\"s`tCol\"),\n" . + " INDEX \"t'e\"\"s`tIndex\"(\"t'e\"\"s`tCol2\") \n)", + $ct->getSqlString(new Platform\Sqlite()) + ); } } diff --git a/test/unit/Sql/Ddl/Index/IndexTest.php b/test/unit/Sql/Ddl/Index/IndexTest.php index 41eb6c9655..348c88e918 100644 --- a/test/unit/Sql/Ddl/Index/IndexTest.php +++ b/test/unit/Sql/Ddl/Index/IndexTest.php @@ -24,7 +24,7 @@ public function testGetExpressionData() [[ 'INDEX %s(%s)', ['my_uk', 'foo'], - [$uk::TYPE_IDENTIFIER, $uk::TYPE_IDENTIFIER], + [$uk::TYPE_IDENTIFIER_ATOMIC, $uk::TYPE_IDENTIFIER_ATOMIC], ]], $uk->getExpressionData() ); @@ -40,7 +40,7 @@ public function testGetExpressionDataWithLength() [[ 'INDEX %s(%s(10), %s(5))', ['my_uk', 'foo', 'bar'], - [$key::TYPE_IDENTIFIER, $key::TYPE_IDENTIFIER, $key::TYPE_IDENTIFIER], + [$key::TYPE_IDENTIFIER_ATOMIC, $key::TYPE_IDENTIFIER_ATOMIC, $key::TYPE_IDENTIFIER_ATOMIC], ]], $key->getExpressionData() ); @@ -56,7 +56,7 @@ public function testGetExpressionDataWithLengthUnmatched() [[ 'INDEX %s(%s(10), %s)', ['my_uk', 'foo', 'bar'], - [$key::TYPE_IDENTIFIER, $key::TYPE_IDENTIFIER, $key::TYPE_IDENTIFIER], + [$key::TYPE_IDENTIFIER_ATOMIC, $key::TYPE_IDENTIFIER_ATOMIC, $key::TYPE_IDENTIFIER_ATOMIC], ]], $key->getExpressionData() );