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 1viXn9-009LQF-0H for pgsql-bugs@arkaria.postgresql.org; Wed, 21 Jan 2026 12:58:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1viXn8-007Cmv-0C for pgsql-bugs@arkaria.postgresql.org; Wed, 21 Jan 2026 12:58: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 1viXn7-007Cmn-29 for pgsql-bugs@lists.postgresql.org; Wed, 21 Jan 2026 12:58:34 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1viXn5-001avL-11 for pgsql-bugs@lists.postgresql.org; Wed, 21 Jan 2026 12:58:33 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-352e2156450so701630a91.3 for ; Wed, 21 Jan 2026 04:58:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769000311; cv=none; d=google.com; s=arc-20240605; b=ix7yMuED15AxKYOXR/A2yq48+dM7FXU80plRFQuuSa6UO7K5uKOtOR0d4b/iCVmZKB SlVdp6E1vL78c/DmH4of4scVnnudBmdbddX6LTmpcBUls3X6UvQLD47ep8cRk7pn6iTf pjHTa1RZVKQdaKOrTcjUsyRkHQk0w6Vk/XY340k1HZO0pH6HN4tR37JEUSZ2hdKYcsZL esxDAPBylsicwuGMLO1lS3QMRuy8rwzazuZwrwbAC80oY/4bqFrxs5hkP+zOzYTqXEzI CT7A37cB62e3k+SC6xYnJPFShmm9270aucJMzuOPETUwzkzTJgVDiprLVTCedkNgLBA9 jKOQ== 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:in-reply-to:references :mime-version:dkim-signature; bh=ZcZQfJoAD9B8uf7eFL0ShqeOpJZe42QePI9ShQXYWPQ=; fh=AsABsHcayD+bSHYgqn+b5qIGvOYaVeoj8AL13oicd4s=; b=Jw/7uOoEZ0shFOzP/GRAKW531kCl4VjvHB1uiPuEKosCs3QJA2+glVMvwQuXBwzWnz ZBlBITmLHn+xCDewsU91yEYsDTs7jiLe8UlN2AdPHvsAjHRZuRXvh7BmpstvDbA96Zv8 L6fWor2Hv2iq456ui/uXH0bSyQLQEiN9q6Kr08wYUNlD6FsYriegaVvk6+pSPIIc+zzA 7h8eXmDzgPaaesdPHb8d0nCCtRiXd+DwxjVWNRTWxFz2OFG5OcCBNmHIbFB/3wpsOlh5 lS4POlhWcss01uTbzBeI38QV2babQOAVS1OxtyHagWqzHthqH9NmxjlCKNur+ewHlL31 m4YA==; 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=20230601; t=1769000311; x=1769605111; 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=ZcZQfJoAD9B8uf7eFL0ShqeOpJZe42QePI9ShQXYWPQ=; b=dgkEpZnwoeCgYbJAn3ezLNSsMXa2LoZRJAsYscYr0NQ8TWt6fOAv21mITvOncjFb9L 9hWOOVkepen5ishaj7qKCLtuOyPGcT86iHtnSYDtrwGdvEaaz9LNFINdrfspNtyX5h4u SP1kJhWNI3/kPWT26TegGI0XORpb6Pq97iuLT77d7VO9xf6pQMLflnogH3s6tykAltjw ZKtjuzwAwVeTZ2dp4zaLU49+3s1A+uuJt+4fcnJ8ymLGpIke3psuPr42cDYH/RuLtiAe ASmGBbmz7kY9E9y+FfBt35c19lDrmLiuZJOVT+pdQBiNy8Lhi4XL6hVpj15f14MyKQfX kpUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769000311; x=1769605111; h=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=ZcZQfJoAD9B8uf7eFL0ShqeOpJZe42QePI9ShQXYWPQ=; b=ny1C+PX52en4ysTwM0kzqHV+43uKJbW1USMf9YuVpi9NXxG57nXNW5gOeRlTumWk1B uElnLWKwl54tl+qCV9aD4G5bJlNsakuUccRZliAAHEkastO66keHeL8T90kFSt/FDeo/ f/57WzEbeJxqXVrCUVumf/MGMJ09ChCDrCG2egv2QjMn+yxTGHg0zJwt8m4DMSdT/Lbj weGybqEsTelBfg9HjyNPWMpGEdrgq+2c4VBukkbERdiIywvV6laU2ihyl6yG2kq+ojWE 0bSp/gjmjZZG+GfzDJf1eWpZfx/QO32xcvLX1o7QgoFKXvmu5hktZ5VSQx7cEKzvm2c6 uCmw== X-Forwarded-Encrypted: i=1; AJvYcCUpcNAYpqvR5MGGS4Qk0p49pinitJUWxmdurqltOEIQvPZpC19FhHNC2NExLs4GMnkZPYOWtEIKrKLg@lists.postgresql.org X-Gm-Message-State: AOJu0YwDsH45S/nGWdKk9ilgyQIjk+IUBtKzknhCtsfzu/WLek8VlGjm eDhk8XZzzSGsj9fJfXC+VftlqdCMtjZaMfn1XeSueG2gsYlK2gJCeQkh9OVJ2jFd7EER9UEvdkC OnRz/Yse5Dtq6ZScCFwKHllyp/WKghYI= X-Gm-Gg: AZuq6aJX1L+DHtmrekCww37xoB+XxxuKI/+vN7cqKetNXcSgcMqhgl3tOmYbMWkYcgU MjTF2/LZn8iEyMMq38Y69yB7fLK8TYhmiBrodwpJY7S7evSTB7jQhN4xSz3t8PWBL+N+Y5DCS2O MExv67xIKv0hzOTe+apLzN1GowdsFyBkHZdduxuo6rgQ/7nsgaT8i6uyVxmWNcs9NngbgEH0Mdc 1BL/BOf79F6a8YtKcTJtrtMFVDfXBf9AlKgjr0BuElT7x9vD3BigXJnhgZAkZqy8/NbbBwa X-Received: by 2002:a17:90b:3d05:b0:34a:b459:bd10 with SMTP id 98e67ed59e1d1-352732559ddmr16104556a91.24.1769000310895; Wed, 21 Jan 2026 04:58:30 -0800 (PST) MIME-Version: 1.0 References: <19099-e05dcfa022fe553d@postgresql.org> <2960545.1761800903@sss.pgh.pa.us> <3017911.1761832112@sss.pgh.pa.us> <1112704.1768847117@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 21 Jan 2026 21:58:13 +0900 X-Gm-Features: AZwV_Qjwa549aSPW6KYQNtvTVS_slxTsgqeuW4uwJ7b42ItPNRWl-MFh-Z5lXMc Message-ID: Subject: Re: BUG #19099: Conditional DELETE from partitioned table with non-updatable partition raises internal error To: Tom Lane Cc: Tender Wang , David Rowley , Kirill Reshke , jian he , Alexander Lakhin , PostgreSQL mailing lists Content-Type: multipart/mixed; boundary="000000000000240f510648e57b45" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000240f510648e57b45 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 20, 2026 at 12:07=E2=80=AFPM Amit Langote wrote: > On Tue, Jan 20, 2026 at 3:25=E2=80=AFAM Tom Lane wrot= e: > > Amit Langote writes: > > >> To summarize, the two approaches we've thought about: > > >> > > >> 1. Executor-side fix > > >> (v4-0001-Fix-bogus-ctid-requirement-for-dummy-root-partiti.patch > > >> posted with my Nov 8 email): > > >> > > >> Make ExecInitModifyTable() not require ctid when the only result > > >> relation is a dummy partitioned root. This is minimally invasive but > > >> leaves EXPLAIN VERBOSE output inconsistent depending on > > >> enable_partition_pruning -- with pruning off, you see tableoid but n= o > > >> ctid, while with pruning on, you see ctid. That's confusing for user= s > > >> as mentioned upthread. > > >> > > >> 2. Planner-side fix > > >> (v4-0001-Fix-row-identity-handling-for-dummy-partitioned-r.patch > > >> posted with my last email): > > >> > > >> Don't add tableoid for child relations that don't contribute > > >> row-identity columns. This keeps root->row_identity_vars empty when > > >> there exists only one such child relation, so > > >> distribute_row_identity_vars() can add ctid for the dummy root. > > >> EXPLAIN output is consistent regardless of pruning setting. (Some m= ay > > >> notice in the patch that there's still a minor change, but that's du= e > > >> to how explain.c decides whether to print the table name before the > > >> column name, which is unrelated to this.) > > >> > > >> I'm inclined to go with the second approach. The only back-patching > > >> concern is that EXPLAIN VERBOSE output order changes (ctid now appea= rs > > >> before tableoid). This is cosmetic -- junk columns are looked up by > > >> name, not position -- but could affect tests or tools that parse > > >> EXPLAIN output by position. > > >> > > >> If there are no objections, I'll commit patch #2 next week. > > > > > Tom, do you have any thoughts on the above? > > > > My apologies, I allowed this thread to fall off my radar. > > > > Of these two patches, I greatly prefer the executor-side fix. > > I think the planner-side fix is much too invasive to consider > > back-patching. Even if it doesn't bother any end users, > > it will surely break some extensions' regression tests, > > considering how many places it changes in our own tests. > > Ok, a fair point. > > > Also, I think the argument about preserving the same generated > > tlist is fairly misguided, for two reasons: > > > > 1. We've never expected that the set of row-identity columns would > > be independent of the set of child tables considered. For example, > > different FDWs might produce different sorts of row-ID Vars. > > > > 2. EXPLAIN's output for a partitioned query is usually different > > between pruning-on and pruning-off. Why's it important that > > this tlist detail not be different? > > Right, the targetlist will look different if a foreign child is pruned > vs not anyway. I was maybe too focused on this degenerate case where > all children are excluded -- with pruning off you get tableoid but no > ctid (because the foreign child was processed before constraint > exclusion, leaving root->row_identity_vars non-empty triggering the > block in distribute_row_identity_vars() to add ctid), with pruning on > you get ctid but no tableoid (because the child was never processed, > leaving root->row_identity_vars empty). > > Because, the degenerate case is a no-op at runtime, maybe we're ok. > > > So on the whole, I'd do #1 and call it good. I don't even see an > > argument for applying #2 in HEAD only. > > Ok, I'll post an updated patch for #1 shortly. Updated patch attached. While reworking it, I realized that partitioned tables should only appear in the result relations list when all leaf partitions have been pruned. So instead of checking nrels > 1, I now Assert(nrels =3D=3D 1) when we see a partitioned table and skip the ctid requirement. Also added a corresponding adjustment in ExecModifyTable() to allow invalid ri_RowIdAttNo for partitioned tables. -- Thanks, Amit Langote --000000000000240f510648e57b45 Content-Type: application/octet-stream; name="v5-0001-Fix-bogus-ctid-requirement-for-dummy-root-partiti.patch" Content-Disposition: attachment; filename="v5-0001-Fix-bogus-ctid-requirement-for-dummy-root-partiti.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mko13c5q0 RnJvbSAwYzNjM2M0OGM1YTgxNTM4OGM0MDJlY2JjMmI4M2QwYjZmYTk5NWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMjE6NDc6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 XSBGaXggYm9ndXMgY3RpZCByZXF1aXJlbWVudCBmb3IgZHVtbXktcm9vdCBwYXJ0aXRpb25lZAog dGFyZ2V0cwoKRXhlY0luaXRNb2RpZnlUYWJsZSgpIHVuY29uZGl0aW9uYWxseSByZXF1aXJlZCBh IGN0aWQganVuayBjb2x1bW4gZXZlbgp3aGVuIHRoZSB0YXJnZXQgd2FzIGEgcGFydGl0aW9uZWQg dGFibGUuIFRoaXMgbGVkIHRvIHNwdXJpb3VzICJjb3VsZApub3QgZmluZCBqdW5rIGN0aWQgY29s dW1uIiBlcnJvcnMgd2hlbiBhbGwgY2hpbGRyZW4gd2VyZSBleGNsdWRlZCBhbmQKb25seSB0aGUg ZHVtbXkgcm9vdCByZXN1bHQgcmVsYXRpb24gcmVtYWluZWQuCgpQYXJ0aXRpb25lZCB0YWJsZXMg c2hvdWxkIG9ubHkgYXBwZWFyIGluIHRoZSByZXN1bHQgcmVsYXRpb25zIGxpc3Qgd2hlbgphbGwg bGVhZiBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcnVuZWQsIGxlYXZpbmcgb25seSB0aGUgZHVtbXkg cm9vdC4gSW4KdGhpcyBjYXNlLCBubyByb3dzIGNhbiBiZSBwcm9kdWNlZCBhbmQgY3RpZCBpcyBu b3QgbmVlZGVkLiBBZGQgYW4gQXNzZXJ0CnRvIHZlcmlmeSB0aGlzIGludmFyaWFudCBhbmQgc2tp cCB0aGUgY3RpZCByZXF1aXJlbWVudCBmb3IgcGFydGl0aW9uZWQKdGFibGVzLiBBbHNvIGFkanVz dCBFeGVjTW9kaWZ5VGFibGUoKSB0byBhbGxvdyBpbnZhbGlkIHJpX1Jvd0lkQXR0Tm8KZm9yIHBh cnRpdGlvbmVkIHRhYmxlcy4KCkJ1ZzogIzE5MDk5ClJlcG9ydGVkLWJ5OiBBbGV4YW5kZXIgTGFr aGluIDxleGNsdXNpb25AZ21haWwuY29tPgpBdXRob3I6IEFtaXQgTGFuZ290ZSA8YW1pdGxhbmdv dGUwOUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUZW5kZXIgV2FuZyA8dG5kcndhbmdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4K RGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8xOTA5OS1lMDVkY2ZhMDIyZmU1NTNkJTQw cG9zdGdyZXNxbC5vcmcKQmFja3BhdGNoLXRocm91Z2g6IDE0Ci0tLQogY29udHJpYi9maWxlX2Zk dy9leHBlY3RlZC9maWxlX2Zkdy5vdXQgfCAxNSArKysrKysrKysrKysrKysKIGNvbnRyaWIvZmls ZV9mZHcvc3FsL2ZpbGVfZmR3LnNxbCAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyB8IDE5ICsrKysrKysrKysrKysrKyst LS0KIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL2ZpbGVfZmR3L2V4cGVjdGVkL2ZpbGVfZmR3Lm91dCBiL2NvbnRy aWIvZmlsZV9mZHcvZXhwZWN0ZWQvZmlsZV9mZHcub3V0CmluZGV4IDUxMjFlMjdkY2U1Li41MWE4 MWVkNTlhOCAxMDA2NDQKLS0tIGEvY29udHJpYi9maWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5v dXQKKysrIGIvY29udHJpYi9maWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5vdXQKQEAgLTQ1Nyw2 ICs0NTcsMjEgQEAgU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHAyOwogIHAyICAg ICAgIHwgMiB8IHh5enp5CiAoMyByb3dzKQogCistLSBUZXN0IERFTEVURS9VUERBVEUvTUVSR0Ug b24gYSBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIGFsbCBwYXJ0aXRpb25zCistLSBhcmUgZXhjbHVk ZWQgYW5kIG9ubHkgdGhlIGR1bW15IHJvb3QgcmVzdWx0IHJlbGF0aW9uIHJlbWFpbnMuIFRoZQor LS0gb3BlcmF0aW9uIGlzIGEgbm8tb3AgYnV0IHNob3VsZCBub3QgZmFpbCByZWdhcmRsZXNzIG9m IHdoZXRoZXIgdGhlCistLSBmb3JlaWduIGNoaWxkIHdhcyBwcm9jZXNzZWQgKHBydW5pbmcgb2Zm KSBvciBub3QgKHBydW5pbmcgb24pLgorRFJPUCBUQUJMRSBwMjsKK1NFVCBlbmFibGVfcGFydGl0 aW9uX3BydW5pbmcgVE8gb2ZmOworREVMRVRFIEZST00gcHQgV0hFUkUgZmFsc2U7CitVUERBVEUg cHQgU0VUIGIgPSAneCcgV0hFUkUgZmFsc2U7CitNRVJHRSBJTlRPIHB0IHQgVVNJTkcgKFZBTFVF UyAoMSwgJ3gnOjp0ZXh0KSkgQVMgcyhhLCBiKQorICBPTiBmYWxzZSBXSEVOIE1BVENIRUQgVEhF TiBVUERBVEUgU0VUIGIgPSBzLmI7CitTRVQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nIFRPIG9u OworREVMRVRFIEZST00gcHQgV0hFUkUgZmFsc2U7CitVUERBVEUgcHQgU0VUIGIgPSAneCcgV0hF UkUgZmFsc2U7CitNRVJHRSBJTlRPIHB0IHQgVVNJTkcgKFZBTFVFUyAoMSwgJ3gnOjp0ZXh0KSkg QVMgcyhhLCBiKQorICBPTiBmYWxzZSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIGIgPSBz LmI7CiBEUk9QIFRBQkxFIHB0OwogLS0gZ2VuZXJhdGVkIGNvbHVtbiB0ZXN0cwogXHNldCBmaWxl bmFtZSA6YWJzX3NyY2RpciAnL2RhdGEvbGlzdDEuY3N2JwpkaWZmIC0tZ2l0IGEvY29udHJpYi9m aWxlX2Zkdy9zcWwvZmlsZV9mZHcuc3FsIGIvY29udHJpYi9maWxlX2Zkdy9zcWwvZmlsZV9mZHcu c3FsCmluZGV4IDFhMzk3YWQ0YmQxLi40Y2NkY2JiOGQwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9m aWxlX2Zkdy9zcWwvZmlsZV9mZHcuc3FsCisrKyBiL2NvbnRyaWIvZmlsZV9mZHcvc3FsL2ZpbGVf ZmR3LnNxbApAQCAtMjQyLDYgKzI0MiwyNCBAQCBVUERBVEUgcHQgc2V0IGEgPSAxIHdoZXJlIGEg PSAyOyAtLSBFUlJPUgogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHB0OwogU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHAxOwogU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHAyOworCistLSBUZXN0IERFTEVURS9VUERBVEUvTUVSR0Ugb24gYSBwYXJ0 aXRpb25lZCB0YWJsZSB3aGVuIGFsbCBwYXJ0aXRpb25zCistLSBhcmUgZXhjbHVkZWQgYW5kIG9u bHkgdGhlIGR1bW15IHJvb3QgcmVzdWx0IHJlbGF0aW9uIHJlbWFpbnMuIFRoZQorLS0gb3BlcmF0 aW9uIGlzIGEgbm8tb3AgYnV0IHNob3VsZCBub3QgZmFpbCByZWdhcmRsZXNzIG9mIHdoZXRoZXIg dGhlCistLSBmb3JlaWduIGNoaWxkIHdhcyBwcm9jZXNzZWQgKHBydW5pbmcgb2ZmKSBvciBub3Qg KHBydW5pbmcgb24pLgorRFJPUCBUQUJMRSBwMjsKK1NFVCBlbmFibGVfcGFydGl0aW9uX3BydW5p bmcgVE8gb2ZmOworREVMRVRFIEZST00gcHQgV0hFUkUgZmFsc2U7CitVUERBVEUgcHQgU0VUIGIg PSAneCcgV0hFUkUgZmFsc2U7CitNRVJHRSBJTlRPIHB0IHQgVVNJTkcgKFZBTFVFUyAoMSwgJ3gn Ojp0ZXh0KSkgQVMgcyhhLCBiKQorICBPTiBmYWxzZSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUg U0VUIGIgPSBzLmI7CisKK1NFVCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgVE8gb247CitERUxF VEUgRlJPTSBwdCBXSEVSRSBmYWxzZTsKK1VQREFURSBwdCBTRVQgYiA9ICd4JyBXSEVSRSBmYWxz ZTsKK01FUkdFIElOVE8gcHQgdCBVU0lORyAoVkFMVUVTICgxLCAneCc6OnRleHQpKSBBUyBzKGEs IGIpCisgIE9OIGZhbHNlIFdIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgYiA9IHMuYjsKKwog RFJPUCBUQUJMRSBwdDsKIAogLS0gZ2VuZXJhdGVkIGNvbHVtbiB0ZXN0cwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA3ZDc0MTFhNzA1Ni4uMTEyNmY3ZWQ4MjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00MzY5LDggKzQzNjksMTIg QEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCXJlbGtpbmQgPT0gUkVM S0lORF9NQVRWSUVXIHx8CiAJCQkJcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQogCQkJewotCQkJCS8qIHJpX1Jvd0lkQXR0Tm8gcmVmZXJzIHRvIGEgY3RpZCBhdHRyaWJ1dGUg Ki8KLQkJCQlBc3NlcnQoQXR0cmlidXRlTnVtYmVySXNWYWxpZChyZXN1bHRSZWxJbmZvLT5yaV9S b3dJZEF0dE5vKSk7CisJCQkJLyoKKwkJCQkgKiByaV9Sb3dJZEF0dE5vIHJlZmVycyB0byBhIGN0 aWQgYXR0cmlidXRlLiAgU2VlIHRoZSBjb21tZW50CisJCQkJICogaW4gRXhlY0luaXRNb2RpZnlU YWJsZSgpLgorCQkJCSAqLworCQkJCUFzc2VydChBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKHJlc3Vs dFJlbEluZm8tPnJpX1Jvd0lkQXR0Tm8pIHx8CisJCQkJCSAgIHJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSk7CiAJCQkJZGF0dW0gPSBFeGVjR2V0SnVua0F0dHJpYnV0ZShzbG90 LAogCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObywKIAkJCQkJCQkJCQkJ ICZpc051bGwpOwpAQCAtNDg4Myw3ICs0ODg3LDE2IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9k aWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJewogCQkJCXJl c3VsdFJlbEluZm8tPnJpX1Jvd0lkQXR0Tm8gPQogCQkJCQlFeGVjRmluZEp1bmtBdHRyaWJ1dGVJ blRsaXN0KHN1YnBsYW4tPnRhcmdldGxpc3QsICJjdGlkIik7Ci0JCQkJaWYgKCFBdHRyaWJ1dGVO dW1iZXJJc1ZhbGlkKHJlc3VsdFJlbEluZm8tPnJpX1Jvd0lkQXR0Tm8pKQorCisJCQkJLyoKKwkJ CQkgKiBGb3IgaGVhcCByZWxhdGlvbnMsIGEgY3RpZCBqdW5rIGF0dHJpYnV0ZSBtdXN0IGJlIHBy ZXNlbnQuCisJCQkJICogUGFydGl0aW9uZWQgdGFibGVzIHNob3VsZCBvbmx5IGFwcGVhciBoZXJl IHdoZW4gYWxsIGxlYWYKKwkJCQkgKiBwYXJ0aXRpb25zIHdlcmUgcHJ1bmVkLCBpbiB3aGljaCBj YXNlIG5vIHJvd3MgY2FuIGJlCisJCQkJICogcHJvZHVjZWQgYW5kIGN0aWQgaXMgbm90IG5lZWRl ZC4KKwkJCQkgKi8KKwkJCQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQorCQkJCQlBc3NlcnQobnJlbHMgPT0gMSk7CisJCQkJZWxzZSBpZiAoIUF0dHJpYnV0ZU51bWJl cklzVmFsaWQocmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObykpCiAJCQkJCWVsb2coRVJST1Is ICJjb3VsZCBub3QgZmluZCBqdW5rIGN0aWQgY29sdW1uIik7CiAJCQl9CiAJCQllbHNlIGlmIChy ZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKLS0gCjIuNDcuMwoK --000000000000240f510648e57b45--