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 1riPjQ-00H2Kz-HH for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Mar 2024 02:13:09 +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 1riPjO-009bPb-4I for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Mar 2024 02:13:06 +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 1riPjN-009bPS-Kf for pgsql-hackers@lists.postgresql.org; Fri, 08 Mar 2024 02:13:06 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1riPjH-003P7I-9A for pgsql-hackers@lists.postgresql.org; Fri, 08 Mar 2024 02:13:04 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2d220e39907so22249211fa.1 for ; Thu, 07 Mar 2024 18:13:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709863979; x=1710468779; 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=DrF0Nz+nF2/LK6L3p/FriUsmF9k0XteCDONLfr5iPwo=; b=kMtcNrhkBgymsZ5Ij1Bi93sQ1w36hs+WH+GVlpMmkYlUk2hYiktEQfKK4WaOTzCiHC sqA/J3bOwPXOpB69LcIkNukh1dbHoMMJ374O+5Oydm6J42CEEIwRjrH9Y1a/HDcSUnZl gRp/jc5WD1slVCLjFC81/m807pT0s9wp3ypKCro+ULDPalM2gthGNscCvSMF/jWdlNyC o73vYYnYyL/TKgpBSsRaz/8YX/e3/c/DLywol9+7ZmFV0lPvM6fwblCzHXylpwzJevqu 6gVDvDvm3QnfBPJv4KdKIg6jbF1aeLShvqv81yFSh16/HXzNTFdzHPDasqQf84Kw+paM DoxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709863979; x=1710468779; 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=DrF0Nz+nF2/LK6L3p/FriUsmF9k0XteCDONLfr5iPwo=; b=OZkkWzo6yx2lfMYg0AJWBimZBvxxfUwVy5jO+DPV0c2gKoVOC/WeVSSFyp1A+GggVo Zt9KYOi8qffcY+bkrCX0SaswSPOITLPMrnn4E2wCZL8bgJ32/0ZWolPJdvJ6UsR6zIyn OhhYPxLeE7lP4V3fuKC0skoK9mDPm9+zPAOx97dMDcFegfmP2BLKo068yfvol/kOQGJs imWFpZBs+TIoL+9Oz7Lqq7mg3cWl2UttKWit6aqX0cve85dr0ec2UQPu0y3izNwBgMAI VPNOcnfIKj9GtIPn5kJSJN26m8t0I2uEIdavXR9OYGDGQ5EzvYmxxvj+DXygcbusmqKF kSyg== X-Forwarded-Encrypted: i=1; AJvYcCVvkJNl69j7PasNl3f5o3EVTjjZHbXAFE06kcu2RBHxUdmFb2TWVNMbckbslf2Eqy5Oi537TZeXUqXN8ugErRp7R3F1u2HU4582wb7jUFeE/nUz X-Gm-Message-State: AOJu0YzFMmNkWqEFUXVpKADnv7+5uKqDdV9PLKKECKh9riwIeeXVgYfX PZ5dW72pWilmB68FYoP2xn4TZ1FIe+gotLyqHKrgPNdaedfrwczvoZzIjFWMDTQJf7V3rJWHUiq NVyxJFiXNkl8gJ+0Tw3si569VRf8= X-Google-Smtp-Source: AGHT+IEbY53xDUtWFTPNr2PM9c0V+uRgItDNZYuAy5rMrmlmreJ2da1VzIT+hpzG+J1DS4Sj9JzHv9vkUpuvyMXDdnE= X-Received: by 2002:ac2:5976:0:b0:513:5a96:5e7d with SMTP id h22-20020ac25976000000b005135a965e7dmr2408299lfp.50.1709863978583; Thu, 07 Mar 2024 18:12:58 -0800 (PST) MIME-Version: 1.0 References: <0714C8B8-8D82-4ABB-9F8D-A0C3657E7B6E@kleczek.org> In-Reply-To: From: David Rowley Date: Fri, 8 Mar 2024 15:12:46 +1300 Message-ID: Subject: Re: Invalid query generated by postgres_fdw with UNION ALL and ORDER BY To: Ashutosh Bapat Cc: =?UTF-8?B?TWljaGHFgiBLxYJlY3plaw==?= , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000eea3506131cbb66" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000eea3506131cbb66 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 8 Mar 2024 at 00:54, Ashutosh Bapat wrote: > > On Thu, Mar 7, 2024 at 4:39=E2=80=AFPM David Rowley wrote: >> I think the fix should go in appendOrderByClause(). It's at that >> point we look for the EquivalenceMember for the relation and can >> easily discover if the em_expr is a Const. I think we can safely just >> skip doing any ORDER BY stuff and not worry about if the >> literal format of the const will appear as a reference to an ordinal >> column position in the ORDER BY clause. > > deparseSortGroupClause() calls deparseConst() with showtype =3D 1. append= OrderByClause() may want to do something similar for consistency. Or remove= it from deparseSortGroupClause() as well? The fix could also be to use deparseConst() in appendOrderByClause() and have that handle Const EquivalenceMember instead. I'd rather just skip them. To me, that seems less risky than ensuring deparseConst() handles all Const types correctly. Also, as far as adjusting GROUP BY to eliminate Consts, I don't think that's material for a bug fix. If we want to consider doing that, that's for master only. >> I wonder if we need a test... > > Yes. I've added two of those in the attached. I also changed the way the delimiter stuff works as the exiting code seems to want to avoid having a bool flag to record if we're adding the first item. The change I'm making means the bool flag is now required, so we may as well use that flag to deal with the delimiter append too. David --0000000000000eea3506131cbb66 Content-Type: text/plain; charset="US-ASCII"; name="postgres_fdw_order_by_const_fix_v2.patch" Content-Disposition: attachment; filename="postgres_fdw_order_by_const_fix_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lti0npjr0 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCA4ZmM2NmZhMTFjLi5hMzBmMDAxNzllIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvZGVwYXJzZS5jCkBAIC0zOTEyLDEzICszOTEyLDEyIEBAIGFwcGVuZE9yZGVyQnlDbGF1 c2UoTGlzdCAqcGF0aGtleXMsIGJvb2wgaGFzX2ZpbmFsX3NvcnQsCiB7CiAJTGlzdENlbGwgICAq bGNlbGw7CiAJaW50CQkJbmVzdGxldmVsOwotCWNvbnN0IGNoYXIgKmRlbGltID0gIiAiOwogCVN0 cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCWJvb2wJCWdvdG9uZSA9IGZhbHNlOwogCiAJ LyogTWFrZSBzdXJlIGFueSBjb25zdGFudHMgaW4gdGhlIGV4cHJzIGFyZSBwcmludGVkIHBvcnRh Ymx5ICovCiAJbmVzdGxldmVsID0gc2V0X3RyYW5zbWlzc2lvbl9tb2RlcygpOwogCi0JYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhidWYsICIgT1JERVIgQlkiKTsKIAlmb3JlYWNoKGxjZWxsLCBwYXRo a2V5cykKIAl7CiAJCVBhdGhLZXkgICAgKnBhdGhrZXkgPSBsZmlyc3QobGNlbGwpOwpAQCAtMzk1 MSw2ICszOTUwLDI1IEBAIGFwcGVuZE9yZGVyQnlDbGF1c2UoTGlzdCAqcGF0aGtleXMsIGJvb2wg aGFzX2ZpbmFsX3NvcnQsCiAKIAkJZW1fZXhwciA9IGVtLT5lbV9leHByOwogCisJCS8qCisJCSAq IElmIHRoZSBtZW1iZXIgaXMgYSBDb25zdCBleHByZXNzaW9uIHRoZW4gd2UgbmVlZG4ndCBhZGQg aXQgdG8gdGhlCisJCSAqIE9SREVSIEJZIGNsYXVzZS4gIFRoaXMgY2FuIGhhcHBlbiBpbiBVTklP TiBBTEwgcXVlcmllcyB3aGVyZSB0aGUKKwkJICogdW5pb24gY2hpbGQgdGFyZ2V0bGlzdCBoYXMg YSBDb25zdC4gIEFkZGluZyB0aGVzZSB3b3VsZCBiZSB3YXN0ZWZ1bCwKKwkJICogYnV0IGFsc28s IGZvciBJTlQgY29sdW1ucywgYW4gaW50ZWdlciBsaXRlcmFsIHdpbGwgYmUgc2VlbiBhcyBhbgor CQkgKiBvcmRpbmFsIGNvbHVtbiBwb3NpdGlvbiByYXRoZXIgdGhhbiBhIHZhbHVlIHRvIHNvcnQg YnksIHNvIHdlIG11c3QKKwkJICogc2tpcCB0aGVzZS4KKwkJICovCisJCWlmIChJc0EoZW1fZXhw ciwgQ29uc3QpKQorCQkJY29udGludWU7CisKKwkJaWYgKCFnb3RvbmUpCisJCXsKKwkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIE9SREVSIEJZICIpOworCQkJZ290b25lID0gdHJ1ZTsK KwkJfQorCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisKIAkJ LyoKIAkJICogTG9va3VwIHRoZSBvcGVyYXRvciBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdHJhdGVn eSBpbiB0aGUgb3BjbGFzcy4KIAkJICogVGhlIGRhdGF0eXBlIHVzZWQgYnkgdGhlIG9wZmFtaWx5 IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcwpAQCAtMzk2NSw3ICszOTgzLDYgQEAgYXBw ZW5kT3JkZXJCeUNsYXVzZShMaXN0ICpwYXRoa2V5cywgYm9vbCBoYXNfZmluYWxfc29ydCwKIAkJ CQkgcGF0aGtleS0+cGtfc3RyYXRlZ3ksIGVtLT5lbV9kYXRhdHlwZSwgZW0tPmVtX2RhdGF0eXBl LAogCQkJCSBwYXRoa2V5LT5wa19vcGZhbWlseSk7CiAKLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsIGRlbGltKTsKIAkJZGVwYXJzZUV4cHIoZW1fZXhwciwgY29udGV4dCk7CiAKIAkJLyoK QEAgLTM5NzUsNyArMzk5Miw2IEBAIGFwcGVuZE9yZGVyQnlDbGF1c2UoTGlzdCAqcGF0aGtleXMs IGJvb2wgaGFzX2ZpbmFsX3NvcnQsCiAJCWFwcGVuZE9yZGVyQnlTdWZmaXgob3ByaWQsIGV4cHJU eXBlKChOb2RlICopIGVtX2V4cHIpLAogCQkJCQkJCXBhdGhrZXktPnBrX251bGxzX2ZpcnN0LCBj b250ZXh0KTsKIAotCQlkZWxpbSA9ICIsICI7CiAJfQogCXJlc2V0X3RyYW5zbWlzc2lvbl9tb2Rl cyhuZXN0bGV2ZWwpOwogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKaW5kZXggYzM1NWU4ZjNmNy4uZjMzMzliNGFjOCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC05MTksNiArOTE5LDQ0 IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKICAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCAiQyAxIiwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzggRlJPTSAiUyAxIi4iVCAxIgog KDYgcm93cykKIAorLS0gRW5zdXJlIHdlIGRvbid0IHB1c2ggT1JERVIgQlkgZXhwcmVzc2lvbnMg d2hpY2ggYXJlIENvbnN0cyBhdCB0aGUgVU5JT04KKy0tIGNoaWxkIGxldmVsIHRvIHRoZSBmb3Jl aWduIHNlcnZlci4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g KAorICAgIFNFTEVDVCAxIEFTIHR5cGUsYzEgRlJPTSBmdDEKKyAgICBVTklPTiBBTEwKKyAgICBT RUxFQ1QgMiBBUyB0eXBlLGMxIEZST00gZnQyCispIE9SREVSIEJZIHR5cGUsYzE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEFwcGVu ZAorICAgU29ydCBLZXk6ICgxKSwgZnQxLmMxCisgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1Ymxp Yy5mdDEKKyAgICAgICAgIE91dHB1dDogMSwgZnQxLmMxCisgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgIkMgMSIgRlJPTSAiUyAxIi4iVCAxIiBPUkRFUiBCWSAiQyAxIiBBU0MgTlVMTFMgTEFT VAorICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnQyCisgICAgICAgICBPdXRwdXQ6IDIs IGZ0Mi5jMQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUICJDIDEiIEZST00gIlMgMSIuIlQg MSIgT1JERVIgQlkgIkMgMSIgQVNDIE5VTExTIExBU1QKKyg4IHJvd3MpCisKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCAxIEFTIHR5cGUs YzEgRlJPTSBmdDEKKyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgMiBBUyB0eXBlLGMxIEZST00g ZnQyCispIE9SREVSIEJZIHR5cGU7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6ICgxKQorICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuZnQxCisgICAgICAgICBPdXRwdXQ6IDEsIGZ0MS5jMQorICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUICJDIDEiIEZST00gIlMgMSIuIlQgMSIKKyAgIC0+ICBG b3JlaWduIFNjYW4gb24gcHVibGljLmZ0MgorICAgICAgICAgT3V0cHV0OiAyLCBmdDIuYzEKKyAg ICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCAiQyAxIiBGUk9NICJTIDEiLiJUIDEiCisoOCByb3dz KQorCiAtLSB1c2VyLWRlZmluZWQgb3BlcmF0b3IvZnVuY3Rpb24KIENSRUFURSBGVU5DVElPTiBw b3N0Z3Jlc19mZHdfYWJzKGludCkgUkVUVVJOUyBpbnQgQVMgJCQKIEJFR0lOCmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDgxMmU3NjQ2ZTEuLmJjOGZkYjY0 MTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3Fs CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0zNjIs NiArMzYyLDIyIEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIEVYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKIAlTRUxFQ1QgKiBGUk9NIGZ0MiBPUkRFUiBCWSBmdDIuYzEsIGZ0Mi5j MyBjb2xsYXRlICJDIjsKIAorLS0gRW5zdXJlIHdlIGRvbid0IHB1c2ggT1JERVIgQlkgZXhwcmVz c2lvbnMgd2hpY2ggYXJlIENvbnN0cyBhdCB0aGUgVU5JT04KKy0tIGNoaWxkIGxldmVsIHRvIHRo ZSBmb3JlaWduIHNlcnZlci4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAq IEZST00gKAorICAgIFNFTEVDVCAxIEFTIHR5cGUsYzEgRlJPTSBmdDEKKyAgICBVTklPTiBBTEwK KyAgICBTRUxFQ1QgMiBBUyB0eXBlLGMxIEZST00gZnQyCispIE9SREVSIEJZIHR5cGUsYzE7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVD VCAxIEFTIHR5cGUsYzEgRlJPTSBmdDEKKyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgMiBBUyB0 eXBlLGMxIEZST00gZnQyCispIE9SREVSIEJZIHR5cGU7CisKIC0tIHVzZXItZGVmaW5lZCBvcGVy YXRvci9mdW5jdGlvbgogQ1JFQVRFIEZVTkNUSU9OIHBvc3RncmVzX2Zkd19hYnMoaW50KSBSRVRV Uk5TIGludCBBUyAkJAogQkVHSU4K --0000000000000eea3506131cbb66--