diff --git a/src/pgproto/backend/well_known_queries.rs b/src/pgproto/backend/well_known_queries.rs
index 15e71e851fee17e614bfc27741de72f9ec88c09e..f3084fac9d034eb75f4ee76eeaeff4f428c0f36d 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())]
             }
         }
     }