]> git.8kb.co.uk Git - postgresql/pg_jsonb_delete_op/blobdiff - pg_jsonb_delete_op.sql
Infact there is no need to roll up values in where clause when deleteing by key
[postgresql/pg_jsonb_delete_op] / pg_jsonb_delete_op.sql
index 7a8ee287acbc3d5aef8c2ea5d50ee58e427742c1..4f559c89d7263ffa9d120a5f4595994a718aea97 100755 (executable)
@@ -12,15 +12,15 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT ('{"' || key || '":' || value || '}')::jsonb ? b
+            WHERE NOT to_json(key)::jsonb ? b
         )
     , '{}')::jsonb;
 $BODY$
 LANGUAGE sql IMMUTABLE STRICT;
         )
     , '{}')::jsonb;
 $BODY$
 LANGUAGE sql IMMUTABLE STRICT;
-COMMENT ON FUNCTION jsonb_delete_left(jsonb, text[]) IS 'delete key in second argument from first argument';
+COMMENT ON FUNCTION jsonb_delete_left(jsonb, text) IS 'delete key in second argument from first argument';
 
 CREATE OPERATOR - ( PROCEDURE = jsonb_delete_left, LEFTARG = jsonb, RIGHTARG = text);
 
 CREATE OPERATOR - ( PROCEDURE = jsonb_delete_left, LEFTARG = jsonb, RIGHTARG = text);
-COMMENT ON OPERATOR - (jsonb, text[]) IS 'delete key from left operand';
+COMMENT ON OPERATOR - (jsonb, text) IS 'delete key from left operand';
 
 --
 
 
 --
 
@@ -31,7 +31,7 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT ('{"' || key || '":' || value || '}')::jsonb ?| b
+            WHERE NOT to_json(key)::jsonb ?| b
         )
     , '{}')::jsonb;
 $BODY$
         )
     , '{}')::jsonb;
 $BODY$
@@ -50,7 +50,7 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT ('{"' || key || '":' || value || '}')::jsonb <@ b
+            WHERE NOT ('{' || to_json(key) || ':' || value || '}')::jsonb <@ b
         )
     , '{}')::jsonb;
 $BODY$
         )
     , '{}')::jsonb;
 $BODY$