From 998824e8201438b284413a68a8b17329c02db12a Mon Sep 17 00:00:00 2001
From: Dmitry Ivanov <ivadmi5@gmail.com>
Date: Thu, 26 Sep 2024 20:23:14 +0300
Subject: [PATCH] fix(pgproto): workaround for broken ORDER BY in tab
 completion query

See https://git.picodata.io/picodata/picodata/sbroad/-/issues/837
---
 src/pgproto/backend/well_known_queries.rs | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/pgproto/backend/well_known_queries.rs b/src/pgproto/backend/well_known_queries.rs
index 15e71e851f..f3084fac9d 100644
--- a/src/pgproto/backend/well_known_queries.rs
+++ b/src/pgproto/backend/well_known_queries.rs
@@ -16,12 +16,14 @@ impl WellKnownQuery {
             WellKnownQuery::ListOfTables(..) => {
                 // TODO: filter _pico names like PostgreSQL filters pg_ names
                 r#"
-                    select
-                        "name" as "relname",
-                        NULL::text as "text"
-                    from "_pico_table"
-                    where substr("name", 1, $1::int) = $2::text
-                    order by "relname"
+                    select * from (
+                        select
+                            name as relname,
+                            NULL::text as "text"
+                        from _pico_table
+                        where name like $1::text || '%'
+                    ) q
+                    order by q.relname
                 "#
                 .into()
             }
@@ -31,10 +33,7 @@ impl WellKnownQuery {
     pub fn parameters(&self) -> Vec<SbroadValue> {
         match self {
             WellKnownQuery::ListOfTables(pattern) => {
-                vec![
-                    SbroadValue::from(pattern.len() as u64),
-                    SbroadValue::from(pattern.to_string()),
-                ]
+                vec![SbroadValue::from(pattern.to_string())]
             }
         }
     }
-- 
GitLab