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 1wDF6a-002ltq-0N for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Apr 2026 05:17:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDF6Z-003tGz-1R for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Apr 2026 05:17:31 +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 1wDF6Z-003tGq-0V for pgsql-hackers@lists.postgresql.org; Thu, 16 Apr 2026 05:17:31 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDF6X-00000001GKI-08fG for pgsql-hackers@lists.postgresql.org; Thu, 16 Apr 2026 05:17:30 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c79506f3c40so852239a12.1 for ; Wed, 15 Apr 2026 22:17:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776316648; cv=none; d=google.com; s=arc-20240605; b=cfmxHud4MxPm4HaRX+DXgGzEsPb9DHi2/ZXYzN+kIYUVBDRFoxEvtJw0ILoifxdW7x Tf+0VkSCbGv4jEtnBQtbNEeIzlKal2+mIlZqh9g/A3OAGG28NXpERP5tRzmXJYt4+j7K xSunaCchWv1r3dWypN19dj1kcw0/EfhylXZlULWn3DSPaop6OE6GwKbJHcaVcc1C49Bk FJLK224dOCxPbd7N2n3FtUDnM5odEtmTmg0nTl09yHCkMMGVDzXvEg5ythQlIm3IB9vu x/mIXoh5yCdteH3fs6Bu+zwRP4mj9JplFAO5QOsiR+/wD8vWasrtCso69H8Ggoq70OMH 9siQ== 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=x3TpBmWMM3PSRHzOKmp6Yhacz/NYCFjpVmb9yx4A8SA=; fh=PDhzRmLFhJQgKl2kpY6iqaoiggk+rKjB8rXL7ERgOws=; b=ZSlUtZFo7ItxgX/bc738BFu4XpOeSuR/xxXCIx2fW+ecSHSJ+MgxTKly/Xua6n8wwp At39yDhmFlJziY28voG3PfHyl3RQFtY/ZZPbLSKxavDasl9LVWDc94PTOMpf/827QrL2 qdDbhUMrYt+8OMtsgPo0iDDJ2CT/6nXeZZFM6T2jHgaQbggqExuDXbKXvjU6EeKUKOGU LIQdTiK2oqDtLjqC7P+odrdBNIbpdK1BoCXFJQUJkR+fUx3SgXJ5vW+gjFSEy/u1Tmxg xM6bVWIDR6IVoN2M87gbrIXeqBgpFxhbuQOI2g2Sd4H3cdJLu9JENO5AWzffi/VI7G3N SBsg==; 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=1776316648; x=1776921448; 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=x3TpBmWMM3PSRHzOKmp6Yhacz/NYCFjpVmb9yx4A8SA=; b=K6y2GVx+EAI4A2GAiOuly94QGrE4FAYHOgANR3puFJmY9m1O4KU16roWFFGWtzVnlz NGx1yy3mjihglfj9SZihwL6qsSgMHMPj74tNGIQFdPM4qa6hsOirAVS7lhWYETo1ENp4 NnLWit7Psi7umRqdMKhj3XYLPyesdSH/2eVDDD27OZfSjjB77bpEBSs8NivQ+Fry6EKx kGoKLSc9JgtgyI4iHuO9RCtGogzM7ESVA3u7Ut50i57KsmQJSEYtyHyifHSaJi45th+q bGdpqwGDLECJhKv2UKNSQZBpC1XPWbWkI7TV5IEKFZlyn5H7DU0Qe1MLt8IjktQPbczj qsLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776316648; x=1776921448; 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=x3TpBmWMM3PSRHzOKmp6Yhacz/NYCFjpVmb9yx4A8SA=; b=jhuw9gp01T2mHZjQonLXqPjLK9+RTeFFC6c756TGT28MNsVbsT1/APerBtsWXM5VD0 jQeSiQPqTXlcXuCNODZykwSjMA/py3dSf01pEoul6WefPo1qO9ojdM9Zi1RPRPr4O25D nQSALJKVUgDKIxDzgLAlAQ5z9rDbvkzyQPKGwv58uSJ06ULb/d1oifBuIQgM7i+menY2 /6Gj6UUTOsbUx4WeVSkHYkEhXN7cqx1BJOtq08wNp9fQW1J+4wULLBUUKjwP2wRAf/St +vfNIzOH2VAZs3g95GJcUcaa3EmdPCKJoOYPOwbFS11RBXK2oRG59shb0Rd2m6rjDNqP Li7w== X-Gm-Message-State: AOJu0YwMFalL9EUrpikReTOg3MND2VM5s/HhUuuEUKO7t9zm3LqiobUo /SNdLNrT55XYntH/LV0zcjOGqXDkJqfiTADIUxvyVv3qSJrQVCqjV9xfiFNo/vZVBYEHUyWyn04 rlZaPZARPiRt5EohM3PQddZRwq0PBmfA= X-Gm-Gg: AeBDies/msDCCE1vsEBkl7h4Ut++SflfADgkLrVtqpYgcP0iggHE2l6Q2SeifxjDjjF MBOLeSiG9yjIkkGi/WrMenrbTGOANghJgy/cIyeFVMBwhe2DuN4cDcp67/RxRBqtDQ97FFfoAzM AKFJu45QSaJBNsgP6RWMsuF3WAKbljPIuv06k8NCgWvvtNHqqwx1umVJuTngZs/0t2R4xO3EKTL 45INk7GGYIUSTb6XfYYpj8TuaXeF5RLhvFIRRgIjAdWd2yY+VcT+mkB1YKmbBUjPT/y3k0TQx3N sUUZFXhncyo/kiySluKhwiryPmfYqJUfylvAX+y1czsjMufLFvw92TWaNeu6yOgCGXznKQhj1vM = X-Received: by 2002:a17:902:da82:b0:2b4:6470:75f4 with SMTP id d9443c01a7336-2b4647078femr129170235ad.28.1776316648501; Wed, 15 Apr 2026 22:17:28 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Thu, 16 Apr 2026 14:17:08 +0900 X-Gm-Features: AQROBzB-b6I_Db3Okd2XPK65WhilLrHUYKPP3z-QbljXadWmf5F7ImE8j5OqOjo Message-ID: Subject: Re: pg_overexplain produces invalid JSON with RANGE_TABLE option To: SATYANARAYANA NARLAPURAM Cc: PostgreSQL Hackers 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 Thu, Apr 16, 2026 at 9:06=E2=80=AFAM Amit Langote wrote: > On Thu, Apr 16, 2026 at 6:36=E2=80=AFAM SATYANARAYANA NARLAPURAM > wrote: > > > > Hi Hackers, > > > > It appears that pg_overexplain produces invalid JSON output when > > EXPLAIN (FORMAT JSON, RANGE_TABLE) is used. The "Unprunable RTIs" and > > "Result RTIs" properties are emitted as key:value pairs directly inside > > the "Range Table" JSON array, which is structurally invalid. > > Thanks for the report and the patch. That makes sense. > > > Attempted to fix this by moving ExplainCloseGroup() before the two over= explain_bitmapset() > > calls, so the properties are emitted as siblings of "Range Table" in th= e parent object rather > > than inside the array. > > > > Attached a patch to address this which also includes a test. > > I have added a commit message. Will commit shortly to master and v18. Pushed. --=20 Thanks, Amit Langote