diff --git a/packages/ltree-helpers/deploy/schemas/ltree_helpers/procedures/to_query.sql b/packages/ltree-helpers/deploy/schemas/ltree_helpers/procedures/to_query.sql index ff75a6e2..782980fd 100644 --- a/packages/ltree-helpers/deploy/schemas/ltree_helpers/procedures/to_query.sql +++ b/packages/ltree-helpers/deploy/schemas/ltree_helpers/procedures/to_query.sql @@ -5,13 +5,21 @@ BEGIN; -- Convert a glob-style path to an lquery value. --- '/projects/*/docs' => 'projects.*.docs' --- '/projects/**' => 'projects.*{1,}' +-- Glob semantics: * = single level, ** = recursive descent +-- '/projects/*/docs' => 'projects.*{1}.docs' +-- '/projects/**' => 'projects.*' +-- '/projects/*' => 'projects.*{1}' CREATE FUNCTION ltree_helpers.to_query( glob text ) RETURNS lquery AS $$ SELECT replace( - replace(ltrim(glob, '/'), '**', '*{1,}'), + replace( + replace( + replace(ltrim(glob, '/'), '**', '__DSTAR__'), + '*', '*{1}' + ), + '__DSTAR__', '*' + ), '/', '.' )::lquery; $$ LANGUAGE sql IMMUTABLE STRICT; diff --git a/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql b/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql index b1265b3e..c8e51fdb 100644 --- a/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql +++ b/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql @@ -16,7 +16,13 @@ $EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; CREATE FUNCTION ltree_helpers.to_query(glob text) RETURNS lquery AS $EOFCODE$ SELECT replace( - replace(ltrim(glob, '/'), '**', '*{1,}'), + replace( + replace( + replace(ltrim(glob, '/'), '**', '__DSTAR__'), + '*', '*{1}' + ), + '__DSTAR__', '*' + ), '/', '.' )::lquery; $EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; \ No newline at end of file