From f7146a479156aa5eb709ee81f20960ee0b629910 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 26 Aug 2021 00:44:00 +0900 Subject: [PATCH] Fix #1778 support multi-column unique indexes using legacy syntax --- common/framework/parsers/dbtableparser.php | 2 +- tests/_data/dbtable/example.xml | 4 ++-- tests/unit/framework/parsers/DBTableParserTest.php | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/framework/parsers/dbtableparser.php b/common/framework/parsers/dbtableparser.php index fbcad9323..c4330d4ca 100644 --- a/common/framework/parsers/dbtableparser.php +++ b/common/framework/parsers/dbtableparser.php @@ -123,7 +123,7 @@ class DBTableParser extends BaseParser { $table->indexes[$index_name] = new DBTable\Index; $table->indexes[$index_name]->name = $index_name; - $table->indexes[$index_name]->is_unique = true; + $table->indexes[$index_name]->type = 'UNIQUE'; } $table->indexes[$index_name]->columns[$column->name] = 0; $column->is_indexed = true; diff --git a/tests/_data/dbtable/example.xml b/tests/_data/dbtable/example.xml index a8e516652..1bdb660e3 100644 --- a/tests/_data/dbtable/example.xml +++ b/tests/_data/dbtable/example.xml @@ -6,8 +6,8 @@ - - + + diff --git a/tests/unit/framework/parsers/DBTableParserTest.php b/tests/unit/framework/parsers/DBTableParserTest.php index f881d0f1d..a7da5ffc4 100644 --- a/tests/unit/framework/parsers/DBTableParserTest.php +++ b/tests/unit/framework/parsers/DBTableParserTest.php @@ -23,9 +23,11 @@ class DBTableParserTest extends \Codeception\TestCase\Test $this->assertEquals('char', $table->columns['regdate']->type); $this->assertEquals('date', $table->columns['regdate']->xetype); - $this->assertEquals(8, count($table->indexes)); + $this->assertEquals(9, count($table->indexes)); $this->assertEquals(['module_srl' => 0, 'document_srl' => 0], $table->indexes['idx_module_document_srl']->columns); $this->assertEquals(['status' => 6], $table->indexes['idx_status']->columns); + $this->assertEquals('UNIQUE', $table->indexes['unique_dates']->type); + $this->assertEquals(['custom_date' => 0, 'regdate' => 0], $table->indexes['unique_dates']->columns); $this->assertEquals('UNIQUE', $table->indexes['unique_list_order']->type); $this->assertEquals('SPATIAL', $table->indexes['spatial_geometry']->type); $this->assertEquals('FULLTEXT', $table->indexes['fulltext_description']->type); @@ -52,6 +54,7 @@ class DBTableParserTest extends \Codeception\TestCase\Test $this->assertStringContainsString('INDEX `idx_document_srl` (`document_srl`),', $sql); $this->assertStringContainsString('INDEX `idx_module_document_srl` (`module_srl`, `document_srl`),', $sql); $this->assertStringContainsString('INDEX `idx_status` (`status`(6)),', $sql); + $this->assertStringContainsString('UNIQUE INDEX `unique_dates` (`custom_date`, `regdate`),', $sql); $this->assertStringContainsString('UNIQUE INDEX `unique_list_order` (`list_order`),', $sql); $this->assertStringContainsString('SPATIAL INDEX `spatial_geometry` (`geometry`),', $sql); $this->assertStringContainsString('FULLTEXT INDEX `fulltext_description` (`description`) WITH PARSER ngram,', $sql);