Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wM7MT-002F4C-2t for pgsql-hackers@arkaria.postgresql.org; Sun, 10 May 2026 16:50:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wM7MQ-00FEkG-0s for pgsql-hackers@arkaria.postgresql.org; Sun, 10 May 2026 16:50:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wM7MP-00FEk6-2A for pgsql-hackers@lists.postgresql.org; Sun, 10 May 2026 16:50:33 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wM7MM-000000019d6-11dE for pgsql-hackers@postgresql.org; Sun, 10 May 2026 16:50:32 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-38e7c3a2deaso29085261fa.2 for ; Sun, 10 May 2026 09:50:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778431828; cv=none; d=google.com; s=arc-20240605; b=kXLppMcMR+oHrk7E7EN1/AouA9raZFcAZZaUP8E6OjRmpb0zUm1gG4sQfOFOue7QZL fcZnEVUJ8OCpnEomYpvXuOqZ8pYIvqf6nOwU8UEXHn0Gb0Krr/BCB2WozxxKT2r8ho/t zjI0zKC9IIorZ80o0t13afqj7EMSnTRFFa6lmSXalUNtzdCV4bnqualrx/NzicecF0qU RbPFM7OuI/SR1KzTqVPSiDf6Z2cvIpuICU33/LSNRkak7VMsLFGvVsrGeC3lvyuKMVj7 TyP9XN9zLj4Vewa1QLrK89jY/nBn9uMsv6uy0x5Hh8W8bJ3nqQFTEkTZqSlEstZ9OnSH vTUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=SF1c9rqXLQlb4mfS8MCxuo36I8JVA8uDMm90YHyctZ8=; fh=RfrkJab44jNT7RraF/sJO97r9/nkUL0AAgzmC7PBS2w=; b=Hm0Ou4+rflUjU1EKXWtJSH1EvyJQvM2eOqUYEOA8jcMnpNlyHic1tYwAVSVaHOZZN4 eSiRJq4CTEKIl23oWigoLp/8J1+N9TDX4r9ILXK0qjI69mdjs4NkHnNhGJKAcwdRJbcj G0b//r5hAJ0H1PnXIj6BoQluedrTkDLWEElkadIlvppnFUS/QzH1RI29hCbzO7dM1xj2 PFSTym/ytI9EBFclP42JRcV1aGRx1imzosy5sdM3FWg/0huKjrLvyct5y5njxn/wdBQw e+CaiL63WmOKQ7bBo3MVzBmPyHZIGbRvarJ3/txRT8OoSgBOQJ4E6sl9F3wyDwEHtkUy jk/A==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=f10-com-br.20251104.gappssmtp.com; s=20251104; t=1778431828; x=1779036628; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=SF1c9rqXLQlb4mfS8MCxuo36I8JVA8uDMm90YHyctZ8=; b=AOV97EWeWVKifFgFYr8vInBciopmmOcfjYmq7AmiotmVDTmSvj4ZSGcHocwrLwY9cd dbZ+Kc4pxVbKOOfdDXI035Y/KUpzy93gpGzG7yr31iuagdFhUxCycSUFyRKj9Oy49DGL c4VCxRwIswTGQ9R39eTSC/FZrWE3zEoh0SnH+9woXd5HDts4sXUtv46IQHP0wxcBgXy4 A/CB17g/9ky2oVcmeI+yDPWDYxYOOhJA08eI+Hd7nz0K5K8KGtlln7tu99cwaNZyf0Vg wf93YzvN7r9dpb5P6MuUb6wC00HYLZeaUMyPusfi3/csi/aXd+JJxwq+esN3ytc3AwzS vCzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778431828; x=1779036628; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SF1c9rqXLQlb4mfS8MCxuo36I8JVA8uDMm90YHyctZ8=; b=ngWxSXNaY43x6WihKS53G1iDH4UEhheqNOht/Nc9+VEC+tkZjLh9ZEgujIRXumpDC8 f/cOAKEd/7aX8ihj7isOxbk+70Wbvp5pqvrBwGIxHpDAEnce9gXytrxl0d5vWEx6jkSQ aAuk4LaqhEJcijwuzn1nWO2Gp7kRz72KBOYnBSrGzJvvytf7V9ITnOn2y1Y+yCQuVRrG pzaD/vdOIVXlhGBFxyJjTlXxbEZUhr3ZnVBQ53xPOpIIZsbRRCwlz5n17soK/42Q1lJx WMQXj+SeOoy6880g77a0cjoyB3HaAOQuxtXPvChuXL9+X5bCXEmexH+pNR9+gnZdhm9j OXBA== X-Gm-Message-State: AOJu0YxMB/2DlLvN1p3hqM5sFqO7iFmbBtR4NgAq9Sb8/Aeiq+frAZq2 AJWL9oQx10SdRTQ7UJUO/7aG9GuR9e7u+79w1zLedb9X5EiReYBFJMmomo0FhAIZ2k5mW5fi2Kz ptvGneDAohhfeBEJHoI+XT43JQdDeWNmKFbyAYVLgAocO7jgZdFbb4g== X-Gm-Gg: Acq92OFqbElQwGerYGX9R+nB5froiWDIXlHzKggnGWe24ZuhZze2BeWETL/x9be+XiT zftcxmP+RGf8aMgcbvr19j1eHphZfkHVg95hO9yW3awkJ3N3MobMfOycpv0UNJsIYadlDG7+j5W GbQp6U9j9wjc6JoQ4Uh7FokjD7YASL61IsKsiGXvgQFrTN50BSbphAz4t/gdyhvT7rPqsj9DriQ 1XDyfA3FH9esgnOQdkSpCaDVUoqE0pCt6qPR5zkwdXRuNhCMWRBA7Cg25VGXQm4+16jIIMsZ6sm YK+kumpiSitlKNfd3X7SDib0OnY= X-Received: by 2002:ac2:5b48:0:b0:5a8:7029:c5e8 with SMTP id 2adb3069b0e04-5a887ce662emr4715956e87.29.1778431827723; Sun, 10 May 2026 09:50:27 -0700 (PDT) MIME-Version: 1.0 From: Marcos Pegoraro Date: Sun, 10 May 2026 13:49:51 -0300 X-Gm-Features: AVHnY4JMxpREFd4LrEWKE9auG3z4DTFRLnhNYnxKp0g9LCzUXTjLEUhVwyLXiMo Message-ID: Subject: Missing jsonb_ ... functions on DOCs To: pgsql-hackers Content-Type: multipart/alternative; boundary="0000000000005954890651796dc6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005954890651796dc6 Content-Type: text/plain; charset="UTF-8" None of these functions are documented, Is this intentional ? If not, how can these functions be there ? An additional table right after operators ? Just a comment on the correspondent operator ? -- jsonb_exists - corresponds to ? operator select jsonb_exists('{"a":null, "b":"qq"}', 'a'); select '{"a":null, "b":"qq"}'::jsonb ? 'a'; -- jsonb_exists_any - corresponds to ?| operator select jsonb_exists_any('{"a":null, "b":"qq"}', ARRAY['a','c']); select '{"a":null, "b":"qq"}'::jsonb ?| ARRAY['a','c']; -- jsonb_exists_all - corresponds to ?& operator select jsonb_exists_all('{"a":null, "b":"qq"}', ARRAY['a','b']); select '{"a":null, "b":"qq"}'::jsonb ?& ARRAY['a','b']; -- jsonb_contains - corresponds to @> operator select jsonb_contains('{"a":null, "b":"qq"}', '{"b":"qq"}'); select '{"a":null, "b":"qq"}'::jsonb @> '{"b":"qq"}'; -- jsonb_contained - corresponds to <@ operator select jsonb_contained('{"b":"qq"}','{"a":null, "b":"qq"}'); select '{"b":"qq"}' <@ '{"a":null, "b":"qq"}'::jsonb; -- jsonb_concat - corresponds to || operator select jsonb_concat('{"b":"qq"}','{"a":null}'); select '{"b":"qq"}'::jsonb || '{"a":null}'::jsonb; -- jsonb_delete - corresponds to - operator select jsonb_delete('{"b":"qq", "a":null}','b'); select '{"b":"qq", "a":null}'::jsonb - 'b' -- jsonb_delete_path - corresponds to #- operator select jsonb_delete_path('{"a":1, "b": {"c": 5, "d":3}}'::jsonb, '{b,c}'); select '{"a":1, "b": {"c": 5, "d":3}}'::jsonb #- '{b,c}'; regards Marcos --0000000000005954890651796dc6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
None of these functions are documented, = Is this intentional ?
If not, how can these functions be there = ?
An additional table right after operators ?
Just a comment = on the correspondent operator ?

-- jsonb_exists - corresponds= to ? operator
select jsonb_exists('{"a":null, &quo= t;b":"qq"}', 'a');
select '{"a"= :null, "b":"qq"}'::jsonb ? 'a';

-- jsonb_exists_any - corresponds to ?| operator
select jsonb_exi= sts_any('{"a":null, "b":"qq"}', ARRAY= ['a','c']);
select '{"a":null, "b&quo= t;:"qq"}'::jsonb ?| ARRAY['a','c'];

-- jsonb_exists_all - corresponds to ?& operator
select jso= nb_exists_all('{"a":null, "b":"qq"}',= ARRAY['a','b']);
select '{"a":null, "= ;b":"qq"}'::jsonb ?& ARRAY['a','b'];=

-- jsonb_contains - corresponds to @> operator
sel= ect jsonb_contains('{"a":null, "b":"qq"}&= #39;, '{"b":"qq"}');
select '{"a&qu= ot;:null, "b":"qq"}'::jsonb @> '{"b&quo= t;:"qq"}';

-- jsonb_contained - corresponds= to <@ operator
select jsonb_contained('{"b":"qq&q= uot;}','{"a":null, "b":"qq"}');select '{"b":"qq"}' <@ '{"a"= :null, "b":"qq"}'::jsonb;

-- json= b_concat - corresponds to || operator
select jsonb_concat('{"b&= quot;:"qq"}','{"a":null}');
select '= {"b":"qq"}'::jsonb || '{"a":null}'= ;::jsonb;

-- jsonb_delete - corresponds to - operator
= select jsonb_delete('{"b":"qq", "a":null}= ','b');
select '{"b":"qq", "a&q= uot;:null}'::jsonb - 'b'

-- jsonb_delete_path= - corresponds to #- operator
select jsonb_delete_path('{"a&quo= t;:1, "b": {"c": 5, "d":3}}'::jsonb, '= ;{b,c}');
select '{"a":1, "b": {"c"= ;: 5, "d":3}}'::jsonb #- '{b,c}';<= /span>

<= /font>regards
Marcos

--0000000000005954890651796dc6--