From 315823a2035de05a2505ebec12682af757402609 Mon Sep 17 00:00:00 2001 From: Matthew Bucci Date: Thu, 22 Feb 2024 00:49:48 -0800 Subject: [PATCH] adjust Select rewriter to handle order by case statements --- pg4wp/rewriters/SelectSQLRewriter.php | 3 +++ tests/rewriteTest.php | 33 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/pg4wp/rewriters/SelectSQLRewriter.php b/pg4wp/rewriters/SelectSQLRewriter.php index 90b6d37..19deb31 100644 --- a/pg4wp/rewriters/SelectSQLRewriter.php +++ b/pg4wp/rewriters/SelectSQLRewriter.php @@ -24,6 +24,9 @@ class SelectSQLRewriter extends AbstractSQLRewriter // Remove the LIMIT clause if it exists $sql = preg_replace('/\s+LIMIT\s+\d+(\s*,\s*\d+)?/i', '', $sql); + // Remove the ORDER BY containing case / end clause if it exists + $sql = preg_replace('/\s+ORDER\s+BY\s+.+END\),[^)]+/is', '', $sql); + // Remove the ORDER BY clause if it exists $sql = preg_replace('/\s+ORDER\s+BY\s+[^)]+/i', '', $sql); diff --git a/tests/rewriteTest.php b/tests/rewriteTest.php index 786c3a3..2031993 100644 --- a/tests/rewriteTest.php +++ b/tests/rewriteTest.php @@ -382,6 +382,39 @@ final class rewriteTest extends TestCase $this->assertSame(trim($expected), trim($postgresql)); } + public function test_it_will_handle_found_rows_on_queries_with_order_by_case() + { + $GLOBALS['pg4wp_numrows_query'] = <<assertSame(trim($expected), trim($postgresql)); + } + protected function setUp(): void