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 1wEk0S-004Lnu-1l for pgsql-bugs@arkaria.postgresql.org; Mon, 20 Apr 2026 08:29:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEk0R-001aB2-1h for pgsql-bugs@arkaria.postgresql.org; Mon, 20 Apr 2026 08:29:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEk0R-001aAu-0w for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 08:29:23 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEk0P-000000026O9-0vAZ for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 08:29:23 +0000 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c70f91776fcso966083a12.0 for ; Mon, 20 Apr 2026 01:29:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776673759; cv=none; d=google.com; s=arc-20240605; b=XWwKnyfLd/i4wwbi/lPuvKfs/NDhYOc7Ll4tK98MpoX6//gFsCb84rDWykzmUgC24/ 80vNSD1LjGOHwM/gfiVzkxUDRhDRrCVOcv+N70/W16WXzP8qK3oM/gxkqjBHStnk9RnK RCg7Zff7juu9SBaCqI+K7g05KCd7+7yejGvKEaYBR/FjEXrDoVDMjAIutjZLJjBHepiy JhBDCH7u226tMdJaxlyfwxIQavxSdx3OIbYlYNipucbq46kczAwopWolIJg+uqF2/l2F Ptgek2tdLZfiYt93qMAqdM/7Vul26SgCUWGYMEL2PV20JD5bbLA/IGpExaxkDynu+eZd Jb9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=dQRCcNwXAtFW+Z9k2uPN8cUr5yWqUiWMtT/lqwUyl80=; fh=qQn5ODIL/rsnh23pm23n2cp3ohv+sCEoY3depUmIXAg=; b=OBP9z+Z/KcRD2mG7i7+EEsPVC8GrNZJvQrdFNeyI+eiyn5sQ106kYhGTO0AUYoa+th As2Y1PkyF08ch2LUFnK9YzHEzE1NivaBdlU96oGxc8Hx0xYwPx6bU1Rrw1VKxOgz/+X/ awA3w+AJGVgUkshcC32wEOcc5oXwyq3jiUFuPEfypTQCxsFBL58zIW4gpb9Z8kBJv/wf mmzJ5K3e39UmnPphG4/mDwEkbCV4GJ2+FLX7M3544p3N1uOv4pnEIWALsY2CrnhaR4o+ XkZbCTkM0yNFPoFhRxEgjuKY8vB5aByu542VS5m3PSY2LtCLCny54/TzD5Cd0DcSuUNj Z9ng==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776673759; x=1777278559; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=dQRCcNwXAtFW+Z9k2uPN8cUr5yWqUiWMtT/lqwUyl80=; b=ox183l2a9FMnacL5lXL4Vy49rs5yERGXMW/pmWJ5ZxAeJirg4naL7Xr3wSRJgnLA44 3BeZ5LH3+U1E+V+yFYmdURZIo/71qE+GsFApNHCr0cx6IUFCOyzllTxFEUiqaDxxHwNb /h3hphAUQ/8tc8qQ2ricn3DfE6CePyzrmCJJ0T7RHr9COhCr3hRRMdislR3LzwHKKz0B 7UTLuU7pLmJAx4LmPeRGrSY7QfC9ffpPt3iD4dWu5KX2ANsC4mAhJXEPar274UC2fTvU waYHS+hQv/GynCFddrzX4xlEq0pDXXrpLfgwmVCJqv6auyb9p26PSk5evrpNgQpBQcor T/zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776673759; x=1777278559; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dQRCcNwXAtFW+Z9k2uPN8cUr5yWqUiWMtT/lqwUyl80=; b=Kfg/o1UPASN5l4I2K4U0BpwFK1qPSKiejoXbFvsF+5ijvpwYuMmQei+a11SN8j4OZ7 4Ae2TMITax2TBSM+pRFrUQB64hiih9VImszoDslnrKJptIx+SpXEA8slbWd367QH4Ji6 Lc1iH2TjJ7+qOdapnkNQ7eXx+l5Rr4Xyp3X9hYOszA6RAFRMMQ6Ufsnrt4CSmVfBDPuR QJhUDBWiUcn55Abz2noG3F7agGLuJ4BOAeWOIjdyXoIqtoYPZW8JpMp5FO8mioLH2GMn cbV1XewqdNi5bLw7Tu7qet6Np4h25ra4D1myeUT0pCVBJq3l/lmfevvw7qY3EOaCFQDD fyrw== X-Forwarded-Encrypted: i=1; AFNElJ/wBpW17SokQogCuA918utiXL/HqIVNsG0BvN9saSp6ZeTA4QZgCufIo2Lg/WeI4oBAq2j1GRQqrasC@lists.postgresql.org X-Gm-Message-State: AOJu0YyZb0d88UoPK9R/IQbUipIoyl7CVYHjqixbqjyaH6DnKvUqCkr/ H6maeRP63Ylso29dj5SO2seibZMv1zOJirGnHQMv+uO5QdJdP2CEeLf3Vs+GLgiyNC0OFjmsY29 I/L254eKJViAz1QNN39+HMa3B4s/NRLk= X-Gm-Gg: AeBDietnJOaZooCCviEqygV2pshd5Kkl5G3uwT8vsLEOGIN7/cd0aKUZtEVYOtnuoWb UYxk00xw9njOJA5SpqK12PpCBKRGKIMP9sCsF67PV806NXhPXL2bJR+Wn3idTRwLgBesG7lIqS6 qT4MFWco9LeCEJJvKS9ObjMcwOGCGQpafUGVb0S4D8EBoUnAm+onza6wzwD4NN3tlFM2Ndbs+Z+ UNb8AK6O9Mupf5wa8n/rVIc5PJ2PG2Bkv6gKTrLQ5LiKhsva13Cqc5c2Qb4UdDguqDv5qck3nkK v8JsAbtjKqFFSUfu/cfmahRlS/QaCpbhYwQsTLxTwFbxYfeZOhETrrh9sgsf4ocPGeQjmqMC9P7 PpvNxSfqjbg== X-Received: by 2002:a05:6a21:3288:b0:39b:edcd:d92f with SMTP id adf61e73a8af0-3a08d685e64mr13654465637.11.1776673758672; Mon, 20 Apr 2026 01:29:18 -0700 (PDT) MIME-Version: 1.0 References: <19418-591ba1f29862ef5b@postgresql.org> <2abdb464-27f5-4759-bb0b-f09ab5b5ceab@postgresfriends.org> In-Reply-To: From: Amit Langote Date: Mon, 20 Apr 2026 17:29:00 +0900 X-Gm-Features: AQROBzDroRX7G8nsWoHBRaL3tVllZQSRBf0JWI33586Wp5zI1Mya0h_x4hYJ_xw Message-ID: Subject: Re: BUG #19418: SQL/JSON JSON_VALUE() does not conform to ISO/IEC 9075-2:2023(E) 6.34 To: jian he Cc: Vik Fearing , lukas.eder@gmail.com, pgsql-bugs@lists.postgresql.org, PG Bug reporting form Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Tue, Mar 3, 2026 at 11:42=E2=80=AFAM jian he wrote: > On Thu, Feb 26, 2026 at 10:20=E2=80=AFPM Vik Fearing wrote: > > > Try this: > > > > > > select json_array(select 1 where false); > > > > > > It produces NULL, not [] > > > > > > I can confirm that postgres violates the standard here. > > > > -- > > Since the subject title mentioned JSON_VALUE. > > SELECT JSON_VALUE(((select NULL where false)), '$'); > SELECT JSON_QUERY(((select NULL where false)), '$'); > SELECT JSON_EXISTS(((select NULL where false)), '$'); > > Should the above produce []? AFAIK about the standard, no. The empty-set -> '[]' rule is specific to JSON_ARRAY(), whose job is to collect rows into an array. JSON_VALUE, JSON_QUERY, and JSON_EXISTS return a scalar, a JSON value, and a boolean, respectively, not array-shaped values, so there's no empty-array concept to invoke; empty-input behavior is governed by ON EMPTY / ON ERROR. --=20 Thanks, Amit Langote