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.94.2) (envelope-from ) id 1vEO2g-00B619-Ty for pgsql-bugs@arkaria.postgresql.org; Thu, 30 Oct 2025 08:29:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vEO2f-006cis-SO for pgsql-bugs@arkaria.postgresql.org; Thu, 30 Oct 2025 08:29:56 +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.94.2) (envelope-from ) id 1vEO2f-006cik-G6 for pgsql-bugs@lists.postgresql.org; Thu, 30 Oct 2025 08:29:56 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vEO2c-004WwD-2e for pgsql-bugs@lists.postgresql.org; Thu, 30 Oct 2025 08:29:55 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-33d962c0e9aso764869a91.0 for ; Thu, 30 Oct 2025 01:29:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761812994; x=1762417794; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=e7fOMCykgmxBChwgSrXEbI6h678YTqP7vVmp63E8YWw=; b=BpzBIQGo2OA/qt7Y+DAhgwC4DTTNLsKkFvDrHeuEOcfb/3TJdr1e7b5PU1iI+tafNp PWpUZCytlElQCF0DOYJMpUFp7FxV9FsfgxakDA6j3T2Cpx6FDT7o2AF7C2fHRj7+3/bx 4ywhUHuokPvqzMYrrMA4pm+hd1x1KTjyclWqJ6F2TmNFbL1yMOdbrqY/FskZ+LyNO5aL 4H/plLZ9V5relM5oxapNXg16tvvK3Q14zUvZgMsffDI1I56ES+YD0Wvjm/mZBMLmgoL+ 2cLS5GPSLt3Q52p//ZcpFSj4uANd67LW1MRONGiYn7WkQRF4GnGEkDVnfqXzjSWN/qyV BIrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761812994; x=1762417794; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e7fOMCykgmxBChwgSrXEbI6h678YTqP7vVmp63E8YWw=; b=b7rdogwYWfF72ValEG5+GOiE5XnMVqOZ4wZwVz5dcygRgWqImWN0cbnmVnlkcb31se j8szLPR91+XhOP1H26NB3tjyNdyYtX9Yekf8l/nUQomXm6iec9FwYYmlkpkwUAIPPDF9 Sd3peZpUtnId37rx6iw/rowH7nfT3mTV6DUoipT9u1VOOnf6Cd6t3z7HkqO1a5AE9eV1 Qdrdz8JAQCG+SJxmSp2IAewxsBljGOEhyd0wyEfXATgcPN0bMnJzz7giNRT+2cmYT7QH Nek0kP3ADSGKvwg7s48huH2gopE08vKZXBIRjTYhfAMkT4fsZJi6pHlBMkG6McM5Hyod udPA== X-Forwarded-Encrypted: i=1; AJvYcCXiiODfepRBb1nUOXSbuvZ5pJ1RN5Bipu7dIjKYGKx8avi92bbHhiUXvq0Gy8h+Xb/f6zysg5Aa4tNz@lists.postgresql.org X-Gm-Message-State: AOJu0Yzxeq0hUIK7fRg7hjZRDhnhrYUyA68DxrAGWC8fw6bhSn10Uy5L nL+68aDbJpFF9Md5JuKllmN1Bjsx0PJH8Wjv/Rx7k7ufak+hZ9P2E1kGW2e//OzaBENA52xbYd5 IhJYhHtBn6++wkoQXJ47MANeNmrOXyzM= X-Gm-Gg: ASbGncsOy5ozP7AGT1bcvvTBBKDSdQVZ1jQKYytIfLDX4MCSnWZq8y1IjI8h002oFkq NqL/9jrfaJkiXb6EaLQ2N6mJlJXal4neg8nl5/Gn5v6xtJMJdj2EKH2ZIeHKlLzur0H2783hX7N qFaWKEWqPglRngdaBmcb2uiJgaL+dJ9XnGT6YoYMQIApwlcgU/sZ4FqHXk/bcqnO7DtFMh5Kj9a vp1/+LiJbpL4B6lwK5wtDYSjdM/QlmPFg4MTYJk+r9WK2Im3qldUBe6UrAnzg== X-Google-Smtp-Source: AGHT+IFOUk2pVw/tEtWf1vDPxXRl+ifPGP3b2IJHOCComdUVx4QZwTISAOa7GAkeEzo/tGYdFL8tYT+6qUPRN098IbU= X-Received: by 2002:a17:90b:1c81:b0:340:29a3:800f with SMTP id 98e67ed59e1d1-3404ac93ee4mr2901999a91.15.1761812993657; Thu, 30 Oct 2025 01:29:53 -0700 (PDT) MIME-Version: 1.0 References: <19099-e05dcfa022fe553d@postgresql.org> <2960545.1761800903@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Thu, 30 Oct 2025 17:29:37 +0900 X-Gm-Features: AWmQ_bmmf4JFJMNeJt_9ybP-wF7TAE_4do8qxNcXo7SYL4ikWyf6kqLqlQdoKX8 Message-ID: Subject: Re: BUG #19099: Conditional DELETE from partitioned table with non-updatable partition raises internal error To: Kirill Reshke Cc: Tom Lane , Tender Wang , jian he , exclusion@gmail.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000a5e8aa06425c0d5b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a5e8aa06425c0d5b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Thu, Oct 30, 2025 at 3:44=E2=80=AFPM Kirill Reshke wrote: > On Thu, 30 Oct 2025 at 10:31, I wrote: > > > > I mean, we I believe we need to execute > > CheckValidResultRel against all partitions in ExecInitModifyTable, at > > least when no partition pruning has been performed > > > > So, the problem is that we managed to exclude all child relations, and > only have a single (dummy) root relation as a result of the > modifyTable plan. Maybe we should populate its target list with > pseudo-junk columns in create_modifytable_plan ? > > For instance, they query does not error-out if we have at least one > another non-file-fdw partition: > > create table p2 partition of pt for values in ( 2) ; > > this is because we have this in create_modifytable_plan > > ``` > /* Transfer resname/resjunk labeling, too, to keep executor happy */ > apply_tlist_labeling(subplan->targetlist, root->processed_tlist); > ``` > > and we successfully found a junk column in the p2 partition. > > The problem is, it works iff root->processed_tlist has at least one > relation which can give us junk columns. Should we add handling for > corner case here? > Another option is to remove this 'Transfer resname/resjunk labeling' > completely and rework planner-executer contracts somehow. I am not really sure if we should play with the planner code. I suspect the real issue is that we=E2=80=99re assuming partitioned tables always need a ctid, which wasn=E2=80=99t true before MERGE started using th= e root ResultRelInfo. In fact, the old code already looked wrong -- it=E2=80= =99s been requiring a ctid even for partitioned tables where that was never necessary. We can fix this by only requiring the junk ctid when we actually operate through the root partitioned table, that is, for MERGE. Like the attached. --=20 Thanks, Amit Langote --000000000000a5e8aa06425c0d5b Content-Type: application/octet-stream; name="partitioned-table-ctid-check.diff" Content-Disposition: attachment; filename="partitioned-table-ctid-check.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhd5rxhg0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGM1NjQ3YWMzOGEuLjc4 Mzk0YmU2N2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDM0 OCw4ICs0MzQ4LDEzIEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQly ZWxraW5kID09IFJFTEtJTkRfTUFUVklFVyB8fAogCQkJCXJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSkKIAkJCXsKLQkJCQkvKiByaV9Sb3dJZEF0dE5vIHJlZmVycyB0byBhIGN0 aWQgYXR0cmlidXRlICovCi0JCQkJQXNzZXJ0KEF0dHJpYnV0ZU51bWJlcklzVmFsaWQocmVzdWx0 UmVsSW5mby0+cmlfUm93SWRBdHRObykpOworCQkJCS8qCisJCQkJICogcmlfUm93SWRBdHRObyBy ZWZlcnMgdG8gYSBjdGlkIGF0dHJpYnV0ZS4gIEl0IG1heSBiZSBtaXNzaW5nCisJCQkJICogb25s eSBmb3Igbm9uLU1FUkdFIG9wZXJhdGlvbnMgb24gcGFydGl0aW9uZWQgdGFibGVzLgorCQkJCSAq LworCQkJCUFzc2VydChBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKHJlc3VsdFJlbEluZm8tPnJpX1Jv d0lkQXR0Tm8pIHx8CisJCQkJCSAgIChyZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUgJiYKKwkJCQkJCW9wZXJhdGlvbiAhPSBDTURfTUVSR0UpKTsKIAkJCQlkYXR1bSA9IEV4ZWNH ZXRKdW5rQXR0cmlidXRlKHNsb3QsCiAJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZvLT5yaV9Sb3dJ ZEF0dE5vLAogCQkJCQkJCQkJCQkgJmlzTnVsbCk7CkBAIC00ODYzLDcgKzQ4NjgsMTQgQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQl7CiAJCQkJcmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObyA9CiAJCQkJCUV4 ZWNGaW5kSnVua0F0dHJpYnV0ZUluVGxpc3Qoc3VicGxhbi0+dGFyZ2V0bGlzdCwgImN0aWQiKTsK LQkJCQlpZiAoIUF0dHJpYnV0ZU51bWJlcklzVmFsaWQocmVzdWx0UmVsSW5mby0+cmlfUm93SWRB dHRObykpCisKKwkJCQkvKgorCQkJCSAqIEZvciBoZWFwIHJlbGF0aW9ucywgYSBjdGlkIGp1bmsg YXR0cmlidXRlIG11c3QgYmUgcHJlc2VudC4KKwkJCQkgKiBGb3IgcGFydGl0aW9uZWQgdGFibGVz LCByZXF1aXJlIGl0IG9ubHkgZm9yIE1FUkdFOyBhbGxvdyBpdCB0byBiZQorCQkJCSAqIG1pc3Np bmcgZm9yIG5vbi1NRVJHRSBvcGVyYXRpb25zLgorCQkJCSAqLworCQkJCWlmICghQXR0cmlidXRl TnVtYmVySXNWYWxpZChyZXN1bHRSZWxJbmZvLT5yaV9Sb3dJZEF0dE5vKSAmJgorCQkJCQkocmVs a2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8IG9wZXJhdGlvbiA9PSBDTURfTUVS R0UpKQogCQkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQganVuayBjdGlkIGNvbHVtbiIp OwogCQkJfQogCQkJZWxzZSBpZiAocmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCg== --000000000000a5e8aa06425c0d5b--