Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oLNoV-0003cJ-AL for pgsql-bugs@arkaria.postgresql.org; Tue, 09 Aug 2022 11:54:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oLNoS-00079t-QU for pgsql-bugs@arkaria.postgresql.org; Tue, 09 Aug 2022 11:54:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oLNoS-00079k-CE for pgsql-bugs@lists.postgresql.org; Tue, 09 Aug 2022 11:54:20 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oLNoO-0003Gw-Tl for pgsql-bugs@lists.postgresql.org; Tue, 09 Aug 2022 11:54:19 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id E2E2E21C5CB2; Tue, 9 Aug 2022 14:54:14 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1660046054; bh=/6uiiBv2i0SdYQMqalXGs6ReYMuZBMO86FgVWmidnCE=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=P4G90bIuetnwG+lj3c2x1Ta1I/yC3uIdJvKg5mRsPpHhhegThQ7i/meMbCvPME7v0 fQamn+69g3S3+V9bj4SNxNTu5aJaDTajdRS1pxsv9nESrJT8I0Pnrw2yC2vBopSrYp U4jxryIFFbPZJU/7gT7o2+s+mZ7TA+Cgc+U4kx2A= MIME-Version: 1.0 Date: Tue, 09 Aug 2022 14:54:14 +0300 From: Alexander Pyhalov To: Richard Guo Cc: Etsuro Fujita , PostgreSQL mailing lists Subject: Re: foreign join error "variable not found in subplan target list" In-Reply-To: References: User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_80fca6f263fa57f15543bb7d7a874928" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_80fca6f263fa57f15543bb7d7a874928 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Richard Guo писал 2022-08-09 06:51: > On Tue, Aug 9, 2022 at 9:59 AM Etsuro Fujita > wrote: > >> On Tue, Aug 9, 2022 at 12:26 AM Alexander Pyhalov >> wrote: >>> Using the following patch I'm able to get >>> "ERROR: variable not found in subplan target list" >>> on foreign join pushdown for update returning. >> >> Reproduced here. Will look into this. >> >> Thanks for the report! > > A rough look shows to me that the part of plan that causes problem > looks > like: > > -> Result > Output: ft2.ctid, ft2.*, ft4.*, ft4.c1, ft2.c2 > -> Sort > Output: ft2.ctid, ft2.*, ft4.*, ft4.c1 > Sort Key: ft4.c1 > > Note that for node 'Result', one of its target entries, 'ft2.c2', does > not appear in the target list of its subplan, i.e. node 'Sort'. > > I think something goes wrong in postgresGetForeignPlan() when we build > the list of columns to be fetched from the foreign server, and fix the > subplan's tlist with that, where we would include in columns specified > in local conditions. In this case the local condition is 'ft2.c2 === > ft4.c1', and that's how we have entry 'ft2.c2' in Result's target > list. > > Thanks > Richard Hi. The issue seems to appear due to the fact that Sort path doesn't provide all vars, needed by local_conds. What if we check for this condition specifically? -- Best regards, Alexander Pyhalov, Postgres Professional --=_80fca6f263fa57f15543bb7d7a874928 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-postgres_fdw-should-avoid-sorted-paths-which-don-t-p.patch Content-Disposition: attachment; filename=0001-postgres_fdw-should-avoid-sorted-paths-which-don-t-p.patch; size=2649 RnJvbSBlMGNmN2JlMTY4MmZlYjhkYmNhODBhZGVmYmFhYzA2ZWY4MzE1YmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDkgQXVnIDIwMjIgMTQ6NDc6MTYgKzAzMDAKU3ViamVjdDogW1BB VENIXSBwb3N0Z3Jlc19mZHcgc2hvdWxkIGF2b2lkIHNvcnRlZCBwYXRocyB3aGljaCBkb24ndCBw cm92aWRlCiBhbGwgcmVxdWlyZWQgdmFycwoKLS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYyB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hh bmdlZCwgNTYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5k ZXggMTYzMjAxNzBjZWUuLmUyMWRkZDc0ODVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYwpAQCAtNTQxLDYgKzU0MSw3IEBAIHN0YXRpYyB2b2lkIG1lcmdlX2Zkd19vcHRpb25zKFBn RmR3UmVsYXRpb25JbmZvICpmcGluZm8sCiAJCQkJCQkJICBjb25zdCBQZ0Zkd1JlbGF0aW9uSW5m byAqZnBpbmZvX28sCiAJCQkJCQkJICBjb25zdCBQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvX2kp Owogc3RhdGljIGludAlnZXRfYmF0Y2hfc2l6ZV9vcHRpb24oUmVsYXRpb24gcmVsKTsKK3N0YXRp YyBib29sIHBhdGhfcHJvdmlkZXNfbG9jYWxfdmFycyhQYXRoICpwYXRoLCBQZ0Zkd1JlbGF0aW9u SW5mbyAqZnBpbmZvKTsKIAogCiAvKgpAQCAtNTc3NSw2ICs1Nzc2LDU0IEBAIGZvcmVpZ25fam9p bl9vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCwgSm9pblR5cGUgam9p bnR5cGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBEZXRlcm1pbmVzIGlmIGFsbCB2YXJz LCB1c2VkIGJ5IGZwaW5mby0+bG9jYWxfY29uZHMsCisgKiBhcmUgcHJvdmlkZWQgYnkgcGF0aC4K KyAqLworc3RhdGljIGJvb2wKK3BhdGhfcHJvdmlkZXNfbG9jYWxfdmFycyhQYXRoICpwYXRoLCBQ Z0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvKQoreworCUxpc3QJICAgKnZhcnNfcHJvdmlkZWQ7CisJ TGlzdENlbGwgICAqbGMxOworCUxpc3RDZWxsICAgKmxjMjsKKwlMaXN0Q2VsbCAgICpsYzM7CisK KwlpZiAocGF0aCA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBHZXQgYWxsIHZhcnMs IHByb3ZpZGVkIGJ5IHBhdGggKi8KKwl2YXJzX3Byb3ZpZGVkID0gcHVsbF92YXJfY2xhdXNlKChO b2RlICopIHBhdGgtPnBhdGh0YXJnZXQtPmV4cHJzLCBQVkNfSU5DTFVERV9QTEFDRUhPTERFUlMp OworCisJZm9yZWFjaChsYzEsIGZwaW5mby0+bG9jYWxfY29uZHMpCisJeworCQlSZXN0cmljdElu Zm8gKnJpID0gKFJlc3RyaWN0SW5mbyAqKSBsZmlyc3QobGMxKTsKKwkJTGlzdAkgICAqdmFyc191 c2VkOworCisJCS8qIEdldCB2YXJzLCB1c2VkIGJ5IHRoaXMgcmVzdHJpY3Rpb24gY2xhdXNlICov CisJCXZhcnNfdXNlZCA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSByaS0+Y2xhdXNlLCBQVkNf SU5DTFVERV9QTEFDRUhPTERFUlMpOworCQlmb3JlYWNoKGxjMiwgdmFyc191c2VkKQorCQl7CisJ CQlWYXIJCSAgICp1c2VkID0gbGZpcnN0KGxjMik7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOwor CisJCQlmb3JlYWNoKGxjMywgdmFyc19wcm92aWRlZCkKKwkJCXsKKwkJCQlWYXIJCSAgICpwcm92 aWRlZCA9IGxmaXJzdChsYzMpOworCisJCQkJaWYgKHByb3ZpZGVkLT52YXJubyA9PSB1c2VkLT52 YXJubyAmJiBwcm92aWRlZC0+dmFyYXR0bm8gPT0gdXNlZC0+dmFyYXR0bm8pCisJCQkJeworCQkJ CQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmICghZm91bmQp CisJCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRp YyB2b2lkCiBhZGRfcGF0aHNfd2l0aF9wYXRoa2V5c19mb3JfcmVsKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCVBhdGggKmVwcV9wYXRoKQpAQCAtNTgxMiw2ICs1 ODYxLDEzIEBAIGFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9yZWwoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJIHVzZWZ1bF9wYXRoa2V5cywKIAkJCQkJCQkJ IC0xLjApOwogCisJCS8qCisJCSAqIFNvcnRlZCBwYXRoIHNob3VsZCBwcm92aWRlIGFsbCB2YXJz IG5lZWRlZCBieSBsb2NhbCBjb25kaXRpb25zIG9yCisJCSAqIHdlJ2xsIG5vdCBiZSBhYmxlIHRv IHVzZSBpdAorCQkgKi8KKwkJaWYgKHNvcnRlZF9lcHFfcGF0aCAhPSBOVUxMICYmICFwYXRoX3By b3ZpZGVzX2xvY2FsX3ZhcnMoc29ydGVkX2VwcV9wYXRoLCAoUGdGZHdSZWxhdGlvbkluZm8gKikg cmVsLT5mZHdfcHJpdmF0ZSkpCisJCQlyZXR1cm47CisKIAkJaWYgKElTX1NJTVBMRV9SRUwocmVs KSkKIAkJCWFkZF9wYXRoKHJlbCwgKFBhdGggKikKIAkJCQkJIGNyZWF0ZV9mb3JlaWduc2Nhbl9w YXRoKHJvb3QsIHJlbCwKLS0gCjIuMzQuMQoK --=_80fca6f263fa57f15543bb7d7a874928--