From 07b49dbb65237285595f88514a3d5e1a82dfa9c5 Mon Sep 17 00:00:00 2001 From: Matthew Bucci Date: Thu, 17 Oct 2024 01:31:06 -0700 Subject: [PATCH] remove key names which are not supported during key creation in postgres --- pg4wp/rewriters/CreateTableSQLRewriter.php | 6 ++++++ tests/rewriteTest.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pg4wp/rewriters/CreateTableSQLRewriter.php b/pg4wp/rewriters/CreateTableSQLRewriter.php index 3a1dcb8..a919124 100644 --- a/pg4wp/rewriters/CreateTableSQLRewriter.php +++ b/pg4wp/rewriters/CreateTableSQLRewriter.php @@ -82,10 +82,16 @@ public function rewrite(): string $sql = preg_replace($pattern, '', $sql); + // Rewrite unique keys to just be UNIQUE without a key name $pattern = "/(,\s*)?UNIQUE KEY\s+[a-zA-Z0-9_]+\s+(\([a-zA-Z0-9_,\s]+\))/"; $replacement = "$1UNIQUE $2"; $sql = preg_replace($pattern, $replacement, $sql); + // Rewrite Primary keys to not have a key name + $pattern = '/PRIMARY KEY\s+\w+\s*\((.*?)\)/'; + $replacement = 'PRIMARY KEY ($1)'; + $sql = preg_replace($pattern, $replacement, $sql); + return $sql; } diff --git a/tests/rewriteTest.php b/tests/rewriteTest.php index e755540..df82566 100644 --- a/tests/rewriteTest.php +++ b/tests/rewriteTest.php @@ -702,7 +702,7 @@ public function test_it_rewrites_mediumints() mysqlcolumn_detail text NOT NULL DEFAULT '', type varchar(210) NOT NULL DEFAULT 'post', item bigint NOT NULL DEFAULT '0', - PRIMARY KEY doctermitem (doc, term, item) + PRIMARY KEY (doc, term, item) ); SQL;