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 1wG54q-005rUU-36 for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 01:11:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wG54q-003k8a-0w for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 01:11:28 +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 1wG54p-003k8S-37 for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 01:11:28 +0000 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wG54n-00000002k8P-2nOy for pgsql-hackers@postgresql.org; Fri, 24 Apr 2026 01:11:27 +0000 Received: by mail-vs1-xe2e.google.com with SMTP id ada2fe7eead31-6120528b8b4so2155711137.0 for ; Thu, 23 Apr 2026 18:11:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776993084; cv=none; d=google.com; s=arc-20240605; b=a0MLMB/ym8OxehpfFha9yjs3F9/iIJ+vAwlBT/v3IurmC9zVYaJFgqbErsgaJHg/3k SAim9ji6PRbOR8Jn2MHFSd3Fly1X9eOk8qffEvxx19HzapvyHl7k0hp9RFN5OqR3RlzW LUmgu41OPqdk15ntV2KXuSmC1SqBRkCZU9GSHqGrKo7/51Ec/zwEDBi4clGBBFD74Xj6 5VbD9NuMWOood2K0q8tGlvVyxPNBIt67jP/SmWalFGQ5BPwpofRCA4OeG0NLBJ6dl8hX 0hJXBuc5MHej8xuKth5p6GKEIT9T4j6cdhL8500sZtmGXWw5nPp6j2TrHx0JpfxlvFR2 ygxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=mds7VnjGaJmZeWFsHilvkJJ0HJHwyhKvhdHyftpGWLQ=; fh=r9uv0etablEXus4wZz+YOHDYxwQg2qKwkV+NES9Gbo4=; b=RBhwbSZo4Id2dtWF3Ohtb/tqih3voJgtIWJRy+IGNL2T37o+IY17tW5QCGMNBMLC+s 5PKNaB9qmAIjdBgnqjHxq41b/MIFsHhg9BiXSF5ys8odta3kmReALd9l2NKYal9QCKoj 6NltTzCwjQwYyMLNriwiySR1wgJS8OoXBW4LHEUWg5PbOp6tGXmzL9OzlzpEJtnpKpS7 ioF34QDc1SyvkvN6dA4cwSvkP/jiuyF38lUb+wxcBIzokvwwxyd1YXBtIA9SFJKN1mcP mQGZC9HGVFsN+E58pZvmbZXS4ehqcG73BqaIAEzJ11ui3eIWqEc/8ZTGdserYR0UAK/f rDSg==; darn=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=1776993084; x=1777597884; darn=postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=mds7VnjGaJmZeWFsHilvkJJ0HJHwyhKvhdHyftpGWLQ=; b=j0vWAoCwZnJ9BFejZU1SpyGYehWgB/EFI2rG0CPW3IlDEmQSLyJELR6LmFtyHkLfE9 Xwtob0S27rg3OuOIviQD2XFwtyEyEwsk6ScetWn6SqM+A1tmoTDCW+3liQE7U9lF1Gdf JSNRJ4QnNiWTE1904gOTgL9dFcFnN6sNrAcvuIhXOWtSl9CNCUwPRpfALJOPwcmiA7Xv CbFwMG4lZ8JPrTZIRYYK+bHAAI+Sfzj2BkC/tmpJ4i1eM7ziTET/EyWbLElzwFx1qhgb 4/V6PSqPgdGySIVme6xT+T3IKcQRUHQafmSzv9Yn4jsF6LcQVgTCmytDPiDlgwExnav2 S2EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776993084; x=1777597884; h=cc: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=mds7VnjGaJmZeWFsHilvkJJ0HJHwyhKvhdHyftpGWLQ=; b=YYEksfm6hIeNjCQHalC8yGkCXp9gEHJsPeC3780oyPyo1P4Lgdqne9zzA+IsheTe2j dCAlNrlCjGCGxsOiI2oZsy/ub2N6+zFwKnDNXxcLJv5hkVjRxX4P5ddOFjqEX2C6jmK4 99UoPBTf6YG3gQuRuqs8rjq3O9+C0JmqlBfMjdg3rFglU9Tig+2J7o7dRwv7sM9cF4xp KuXOmkxZK16R+i6/vCouJbbWJJmGiApMpR8Ja3HmVHrB8ZTW16qg0RRnIxBC9wPtrqba l2UgzQ5FxDs0k0Ln/Y/PxPPhE9hKrg5blnLvpXHURi4vdX8u4sd/GHiamEkoHF+fTbjg P3YQ== X-Gm-Message-State: AOJu0Yz7p56iYppzp03UZS4JiffCCHO0Jx8hTklvpUlxuCmK9/hXrb/Q u1EtKbauKGu+te+m8F+7GBZbTFVDHPumGa0DBJk1x7IsSxDDy/NUMq+A7hJtsn1co1pMz0resLh C+HVDmo4ixYFPP3TxRVrN+K/tqH6eHMhJV7exy6KsDA== X-Gm-Gg: AeBDiesgA3BT9G/UlTZTU3hB26EwD6NsbMd0Cskgf46u0nY9g+ugrjN9ClcIkq3dMdl 48/HBz9bdcgHSFRxgu/rG7ByvPNnLKMq7ktrqPKTyk5eNjie0eHTOxbfPEfmq10Sqe9SDMy9NCa iBpzjRafx23BkYYYnwTC921QpvFQrwB8mA2Obtu9hVxUEc8LPa4Kd3+GAxyfYqiLsrwy6Au+wEm B+/xdjR/J27Xfuhvvc/QyjWKsAPDu1JvVhv4MImkhaIrMT6YP7WIkKKXfawN6/uQcLKHcw7gKQW NsXUDDTS5poE/TmhPWRJASGmQvU6JilVZWsY6oCaJJttSyRkRFmatF2sd8Ulu0xmXwkJj4I7gLt 4y3fp+WfgULvUMl4ldNXOl14aFVTp5tVUogkKoxXWcmX24nhyiXoypBGjizVdOBE3XUFCY5VHts NcOhQxrkIhVvn7tx0whUwUlb07cjDB6lg= X-Received: by 2002:a05:6102:5124:b0:609:2cf6:51d8 with SMTP id ada2fe7eead31-616f4546f50mr15001684137.3.1776993083934; Thu, 23 Apr 2026 18:11:23 -0700 (PDT) MIME-Version: 1.0 From: jian he Date: Fri, 24 Apr 2026 09:10:47 +0800 X-Gm-Features: AQROBzD6xM3lLAkfXSFjD0WIv6ug8lT4HqvjlgOdd9zLz1YhHuNOgq9eh3LXQiI Message-ID: Subject: FOR PORTION OF gram.y target_location seems wrong To: PostgreSQL-development Cc: Paul A Jungwirth Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi. | FOR PORTION OF ColId FROM a_expr TO a_expr { ForPortionOfClause *n = makeNode(ForPortionOfClause); n->range_name = $4; n->location = @4; n->target_start = $6; n->target_end = $8; n->target_location = @5; $$ = (Node *) n; } n->target_location = @5; Should be n->target_location = @6; It's not reachable because of queries like: UPDATE for_portion_of_test FOR PORTION OF valid_at FROM NULL TO NULL SET name = 'NULL to NULL'; won't reach ereport(ERROR, (errmsg("FOR PORTION OF target was null")), executor_errposition(estate, forPortionOf->targetLocation)); typedef struct ForPortionOfClause { NodeTag type; char *range_name; /* column name of the range/multirange */ ParseLoc location; /* token location, or -1 if unknown */ ParseLoc target_location; /* token location, or -1 if unknown */ Node *target; /* Expr from FOR PORTION OF col (...) syntax */ Node *target_start; /* Expr from FROM ... TO ... syntax */ Node *target_end; /* Expr from FROM ... TO ... syntax */ } ForPortionOfClause; Generally, we place ParseLoc at the end of the node, putting it elsewhere should be fine. But here, we have two comments, ``/* token location, or -1 if unknown */``. The "token" is ambiguous, perhaps it's worth the trouble to enhance it? -- jian https://www.enterprisedb.com/