From ade3d6ad8731035cd8d8a2f08a2a32acf5b754e5 Mon Sep 17 00:00:00 2001 From: Matthew Bucci Date: Thu, 11 Jan 2024 01:28:43 -0800 Subject: [PATCH] handle case with keys across multiple columns with defined lengths --- pg4wp/rewriters/CreateTableSQLRewriter.php | 2 +- tests/rewriteTest.php | 48 ++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/pg4wp/rewriters/CreateTableSQLRewriter.php b/pg4wp/rewriters/CreateTableSQLRewriter.php index bc88bdd..e7aba47 100644 --- a/pg4wp/rewriters/CreateTableSQLRewriter.php +++ b/pg4wp/rewriters/CreateTableSQLRewriter.php @@ -92,7 +92,7 @@ class CreateTableSQLRewriter extends AbstractSQLRewriter } // Support for UNIQUE INDEX creation - $pattern = '/,\s*(UNIQUE |)KEY\s+(`[^`]+`|\w+)\s+\((.*?)\)(?!\))/'; + $pattern = '/,\s*(UNIQUE |)KEY\s+(`[^`]+`|\w+)\s+\(((?:[^()]|\([^)]*\))*)\)/'; if(preg_match_all($pattern, $sql, $matches, PREG_SET_ORDER)) { foreach($matches as $match) { $unique = $match[1]; diff --git a/tests/rewriteTest.php b/tests/rewriteTest.php index 3ccc2e3..985f7d4 100644 --- a/tests/rewriteTest.php +++ b/tests/rewriteTest.php @@ -333,6 +333,54 @@ final class rewriteTest extends TestCase $postgresql = pg4wp_rewrite($sql); $this->assertSame(trim($expected), trim($postgresql)); } + + + + public function test_it_can_create_double_keys_with_length() + { + $sql = <<assertSame(trim($expected), trim($postgresql)); + }