From e517fbbcaa58bbd1edf0921e3c0b7854caa28df5 Mon Sep 17 00:00:00 2001 From: Hugues Peccatte Date: Mon, 28 Oct 2019 23:26:05 +0100 Subject: [PATCH] Manage "CHECK" keyword Even if this keyword is ignored by MySQL, it should be parsed. Ref: #167 Signed-off-by: Hugues Peccatte --- src/Components/CreateDefinition.php | 7 ++++++- tests/Components/CreateDefinitionTest.php | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index ed79af737..0f44e09cf 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -79,7 +79,12 @@ class CreateDefinition extends Component ), 'VIRTUAL' => 10, 'PERSISTENT' => 11, - 'STORED' => 11 + 'STORED' => 11, + 'CHECK' => array( + 12, + 'expr', + array('parenthesesDelimited' => true), + ) // Common entries. // // NOTE: Some of the common options are not in the same order which diff --git a/tests/Components/CreateDefinitionTest.php b/tests/Components/CreateDefinitionTest.php index 3683e290d..d00feea5f 100644 --- a/tests/Components/CreateDefinitionTest.php +++ b/tests/Components/CreateDefinitionTest.php @@ -63,4 +63,20 @@ public function testBuild() CreateDefinition::build($parser->statements[0]->fields[1]) ); } + + public function testBuild2() + { + $parser = new Parser( + 'CREATE TABLE `payment` (' . + '-- snippet' . "\n" . + '`customer_id` smallint(5) unsigned NOT NULL,' . + '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL CHECK (json_valid(customer_data)),' . + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"' + ); + $this->assertEquals( + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', + CreateDefinition::build($parser->statements[0]->fields[2]) + ); + } }