From e1a98c31d90981cdfdba3c734a60e5abf9c522c2 Mon Sep 17 00:00:00 2001 From: Julien Rouhaud Date: Fri, 1 Nov 2024 05:32:18 +0800 Subject: [PATCH] Fix cursor quoting in FetchStmt (#267) * Fix cursor quoting in FetchStmt Regression tests updated to test all cursor related statement with a name that requires quoting. * Test quoting in `deparse_tests.c` --------- Co-authored-by: msepga --- src/postgres_deparse.c | 2 +- test/deparse_tests.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/postgres_deparse.c b/src/postgres_deparse.c index 1a97abbe..fd4e0add 100644 --- a/src/postgres_deparse.c +++ b/src/postgres_deparse.c @@ -8707,7 +8707,7 @@ static void deparseFetchStmt(StringInfo str, FetchStmt *fetch_stmt) appendStringInfo(str, "RELATIVE %ld ", fetch_stmt->howMany); } - appendStringInfoString(str, fetch_stmt->portalname); + appendStringInfoString(str, quote_identifier(fetch_stmt->portalname)); } static void deparseAlterDefaultPrivilegesStmt(StringInfo str, AlterDefaultPrivilegesStmt *alter_default_privileges_stmt) diff --git a/test/deparse_tests.c b/test/deparse_tests.c index 09445b45..03fd88f2 100644 --- a/test/deparse_tests.c +++ b/test/deparse_tests.c @@ -407,7 +407,9 @@ const char* tests[] = { "ALTER TABLE a DISABLE TRIGGER ALL", "ALTER TABLE a DISABLE TRIGGER USER", "CREATE INDEX myindex ON public.mytable USING btree (col1, (col2::varchar) varchar_pattern_ops)", - "SELECT * FROM CAST(1 AS text)" + "SELECT * FROM CAST(1 AS text)", + "DECLARE \"Foo1\" SCROLL CURSOR FOR SELECT * FROM tenk1 ORDER BY unique2", + "FETCH BACKWARD 23 \"Foo1\"" }; size_t testsLength = __LINE__ - 4;