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 1uCjlr-001YW7-MG for pgsql-bugs@arkaria.postgresql.org; Wed, 07 May 2025 18:45:32 +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 1uCjlq-00FgCx-Ls for pgsql-bugs@arkaria.postgresql.org; Wed, 07 May 2025 18:45:30 +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 1uCjin-00FdpC-VG for pgsql-bugs@lists.postgresql.org; Wed, 07 May 2025 18:42:22 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uCjik-000dPN-2D for pgsql-bugs@lists.postgresql.org; Wed, 07 May 2025 18:42:21 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ac289147833so25133666b.2 for ; Wed, 07 May 2025 11:42:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746643338; x=1747248138; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=dBP+7Nwee2zAEbbOY78fIb3tV0ASqMuLgG/U1P1z2o0=; b=DNQd1QWtPn7xj1sYsI3krERG8OZgNzyIXcm7DlQrzkAOC4suR0S72j31RMcsqOSF5r 1g0O+i4oYyj6KetyL6TbxrXmd2ma2XIpn2Qc9iYIURwhLv/EEo0K7LfSTKYsnExxabCt jQj2HsjVR/EiLQ6RknSiOI4UJvDZztRW55OkTVuJm6MI53XR1kziKti/M3JafGm/kfyJ LmW1Al5HCUxumUuR1s1pCP3CBocoE8oUIlo10bpBhU7BwEIPkwTsr35YXEpzYc6ScUpP D7Ru253sjdFKH5Qi6pmbW4MD6iTwxkh/ZIuspfxFL+KHs0gSy0VVrtI3dzWLB0cEWxWy F8wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746643338; x=1747248138; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dBP+7Nwee2zAEbbOY78fIb3tV0ASqMuLgG/U1P1z2o0=; b=K4pUPt9Q2nFNKTKzjAi0v0e8/NcbNppJNZY5YOz5lZbJVVe51jk3yyEPXJ/2TOpU/1 pltUspLWA4Qp2HkoD5v/OnrKofw0Vpi844s9WnFBRjQvTFhcO1lZxKWAaPP90StLd1Dj dXd4MVuJL31RFZTIpGNP9mQrKATXjZUsQjkRYveXDfKYRUgoD1EEtrujkjTJgm1eJnJO uWyOoxAkbpEgUIK6U3QA4bVRBsHST1wDzohZPlyqNh03nDbScz5JWEwHHm34DjFUnakG 21jdLh0631IOrtZgIJdCdchC/SI+RIao0rzKqznCGjcLoGnKHJBhlEILRV8fZDayoy7I YPbA== X-Gm-Message-State: AOJu0YwaYEyjrYlGcBfHKCt9/7YyoF5ZZELMn44hEqMfyqQeCEZPeBVy yLlnTWmRHwiA0bXhef+Vy4EWvJn32MJ3Nfb4YM2OoOnYBWQTNdnL X-Gm-Gg: ASbGnctZ9bHux5JMP655S5L0CxXSQNgeHZG20tY3T8FzV9XaGAdT3gWDIIQA6DqnPxD WAZwec+u90P2JiBY5S+iQDRxtwDSGh9cRkVMkSVkSnENTIjM4xGa+WeXHOq4FL73h5RT0fAaPIl qEK/xS4praT7g3PTNi7hB25u+92CXv+q+OT1p4+/AvXzQFj2T4DMbV3ZNoihDShNsNWX+VPIDFd PeaIJjgPePLrKld4IzjIcy7Bcg3cRpxER/5T/P7YRAfXVr5DfwAFL06Se7mZHxq3qE079ykSzek G6878e5l3rIEagUxeJ7nuIIvKLy79j3bVlAgrG5QuA/QsP2ES4JA4snG X-Google-Smtp-Source: AGHT+IFGlV3xl8dY/94JXEGYekpWQEiXRSraOEd7mj/Pb/MJbWRXYWdiMEZW3dFlpqG6gz0imBXhHA== X-Received: by 2002:a17:907:2d9e:b0:acb:63a4:e8e9 with SMTP id a640c23a62f3a-ad1e8c8c4cbmr453766666b.5.1746643337521; Wed, 07 May 2025 11:42:17 -0700 (PDT) Received: from [10.5.49.215] ([213.30.207.154]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad189508c83sm953939166b.139.2025.05.07.11.42.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 May 2025 11:42:16 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------QOpnW2kjNJVbc2Rdw0SWTif4" Message-ID: <3c83c594-6beb-414b-8059-f57e9a9eb0d7@gmail.com> Date: Wed, 7 May 2025 20:42:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Incorrect calculation of path fraction value in MergeAppend To: Alvaro Herrera , Junwang Zhao Cc: "pgsql-bugs@lists.postgresql.org" , Tomas Vondra , Tom Lane References: <3ca271fa-ca5c-458c-8934-eb148622b270@gmail.com> Content-Language: en-US From: Andrei Lepikhov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------QOpnW2kjNJVbc2Rdw0SWTif4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 7/5/2025 12:45, Álvaro Herrera wrote: > On 2025-May-07, Andrei Lepikhov wrote: >> The magic is how it finds a link to the thread. This time it doesn't > Weird, that doesn't seem to work very well if you try to search for > stuff. But if you just specify the Message-Id without clicking > "search" then it works. So here you go: > https://commitfest.postgresql.org/patch/5742/ Thanks! I think this memo should be pinned at the top of the page. On 7/5/2025 17:35, Junwang Zhao wrote: > + /* Convert absolute limit to a path fraction */ > + if (path_fraction >= 1.) > + path_fraction /= childrel->rows; > > maybe add `&& childrel->rows > 0.` to the if condition to > avoid potential crash. I'm not sure if `childrel->rows` will > be 0 but I see get_cheapest_fractional_path did this. You may look at the 76281aa for the reason. Also, looking into the code, I see that it is impossible now to find more places with rows == 0 except for the Dummy result node. Moreover, it just doesn't make sense in the case of append nodes: why should the optimiser spend resources and consider paths if it is impossible to pull any tuples from the subplan? So, I think checking assertion instead would be the better option. See new version in the attachment. -- regards, Andrei Lepikhov --------------QOpnW2kjNJVbc2Rdw0SWTif4 Content-Type: text/plain; charset=UTF-8; name="v1-0001-Fix-tuple_fraction-calculation-for-merge-append-f.patch" Content-Disposition: attachment; filename*0="v1-0001-Fix-tuple_fraction-calculation-for-merge-append-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYmM1ZjUzNDgyODNjNmYyNTM1ZDBkYTlkMmJiZmQ0OTQyZjg3NzM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgMjkgQXByIDIwMjUgMTI6NTQ6NTkgKzAyMDAKU3ViamVj dDogW1BBVENIIHYxXSBGaXggdHVwbGVfZnJhY3Rpb24gY2FsY3VsYXRpb24gZm9yIG1lcmdl IGFwcGVuZCBmcmFjdGlvbmFsCiBwYXRoCgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2FsbHBhdGhzLmMgICAgICAgIHwgIDkgKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCB8IDE4ICsrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3FsICAgICAgfCAgMyArKysK IDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4IDkwNTI1MGIzMzI1Li42 MzczMDY5NTM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBA IC0xODkxLDcgKzE4OTEsMTQgQEAgZ2VuZXJhdGVfb3JkZXJlZGFwcGVuZF9wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJICovCiAJCQlpZiAocm9vdC0+ dHVwbGVfZnJhY3Rpb24gPiAwKQogCQkJewotCQkJCWRvdWJsZQkJcGF0aF9mcmFjdGlvbiA9 ICgxLjAgLyByb290LT50dXBsZV9mcmFjdGlvbik7CisJCQkJZG91YmxlCQlwYXRoX2ZyYWN0 aW9uID0gcm9vdC0+dHVwbGVfZnJhY3Rpb247CisKKwkJCQkvKiBNZXJnZSBBcHBlbmQgY29u c2lkZXJzIG9ubHkgbGl2ZSBjaGlsZHJlbHMgKi8KKwkJCQlBc3NlcnQoY2hpbGRyZWwtPnJv d3MgPiAwKTsKKworCQkJCS8qIENvbnZlcnQgYWJzb2x1dGUgbGltaXQgdG8gYSBwYXRoIGZy YWN0aW9uICovCisJCQkJaWYgKHBhdGhfZnJhY3Rpb24gPj0gMS4wKQorCQkJCQlwYXRoX2Zy YWN0aW9uIC89IGNoaWxkcmVsLT5yb3dzOwogCiAJCQkJY2hlYXBlc3RfZnJhY3Rpb25hbCA9 CiAJCQkJCWdldF9jaGVhcGVzdF9mcmFjdGlvbmFsX3BhdGhfZm9yX3BhdGhrZXlzKGNoaWxk cmVsLT5wYXRobGlzdCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fam9pbi5vdXQKaW5kZXggNjEwMWM4YzdjZjEuLmQ1MzY4MTg2Y2FhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dApAQCAtNTI2MCw2 ICs1MjYwLDI0IEBAIFNFTEVDVCB4LmlkLCB5LmlkIEZST00gZnJhY3RfdCB4IExFRlQgSk9J TiBmcmFjdF90IHkgVVNJTkcgKGlkKSBPUkRFUiBCWSB4LmlkIERFCiAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoaWQgPSB4XzIuaWQpCiAoMTEgcm93cykKIAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSAtLSBTaG91bGQgdXNlIE5lc3RMb29wIHdpdGggcGFyYW1ldGVyaXNl ZCBpbm5lciBzY2FuCitTRUxFQ1QgeC5pZCwgeS5pZCBGUk9NIGZyYWN0X3QgeCBMRUZUIEpP SU4gZnJhY3RfdCB5IFVTSU5HIChpZCkKK09SREVSIEJZIHguaWQgREVTQyBMSU1JVCAyOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgTGltaXQKKyAgIC0+ICBNZXJnZSBBcHBlbmQKKyAgICAgICAgIFNvcnQgS2V5OiB4Lmlk IERFU0MKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgICAg ICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgZnJhY3RfdDBfcGtleSBv biBmcmFjdF90MCB4XzEKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNp bmcgZnJhY3RfdDBfcGtleSBvbiBmcmFjdF90MCB5XzEKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChpZCA9IHhfMS5pZCkKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBM ZWZ0IEpvaW4KKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQg dXNpbmcgZnJhY3RfdDFfcGtleSBvbiBmcmFjdF90MSB4XzIKKyAgICAgICAgICAgICAgIC0+ ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZnJhY3RfdDFfcGtleSBvbiBmcmFjdF90MSB5XzIK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHhfMi5pZCkKKygxMSBy b3dzKQorCiAtLQogLS0gVGVzdCBBcHBlbmQncyBmcmFjdGlvbmFsIHBhdGhzCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3FsCmluZGV4IGI3NmM1NDUxMDAx Li4zMGYxNWVlOWFjYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX2pvaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2lu LnNxbApAQCAtMTIyNCw2ICsxMjI0LDkgQEAgU0VMRUNUIHguaWQsIHkuaWQgRlJPTSBmcmFj dF90IHggTEVGVCBKT0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIHguaWQgQVMK IAogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHguaWQsIHkuaWQgRlJPTSBmcmFjdF90 IHggTEVGVCBKT0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIHguaWQgREVTQyBM SU1JVCAxMDsKK0VYUExBSU4gKENPU1RTIE9GRikgLS0gU2hvdWxkIHVzZSBOZXN0TG9vcCB3 aXRoIHBhcmFtZXRlcmlzZWQgaW5uZXIgc2NhbgorU0VMRUNUIHguaWQsIHkuaWQgRlJPTSBm cmFjdF90IHggTEVGVCBKT0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpCitPUkRFUiBCWSB4Lmlk IERFU0MgTElNSVQgMjsKIAogLS0KIC0tIFRlc3QgQXBwZW5kJ3MgZnJhY3Rpb25hbCBwYXRo cwotLSAKMi40OS4wCgo= --------------QOpnW2kjNJVbc2Rdw0SWTif4--