]> git.8kb.co.uk Git - postgresql/pg_jsonb_delete_op/blobdiff - pg_jsonb_delete_op.sql
Use array ALL() function, and remove json/jsonb casts
[postgresql/pg_jsonb_delete_op] / pg_jsonb_delete_op.sql
index 1d52515e3497f2b85676719dddb609ba6dd22c34..5671a35a2ced794e5ae4b74464a0ac8bb4850667 100755 (executable)
@@ -12,7 +12,7 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT to_json(key || ':' || value)::jsonb ? b
+            WHERE NOT to_json(key)::jsonb ? b
         )
     , '{}')::jsonb;
 $BODY$
@@ -31,7 +31,7 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT to_json(key || ':' || value)::jsonb ?| b
+            WHERE key <> ALL(b)
         )
     , '{}')::jsonb;
 $BODY$
@@ -50,7 +50,7 @@ $BODY$
         (
             SELECT ('{' || string_agg(to_json(key) || ':' || value, ',') || '}')
             FROM jsonb_each(a)
-            WHERE NOT to_json(key || ':' || value)::jsonb <@ b
+            WHERE NOT ('{' || to_json(key) || ':' || value || '}')::jsonb <@ b
         )
     , '{}')::jsonb;
 $BODY$