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 1rkXaZ-00DS41-Qo for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 23:00:48 +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 1rkXaX-00DhCD-SD for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 23:00:46 +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 1rkXaX-00DhC5-EP for pgsql-hackers@lists.postgresql.org; Wed, 13 Mar 2024 23:00:46 +0000 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rkXaP-004ML7-W9 for pgsql-hackers@lists.postgresql.org; Wed, 13 Mar 2024 23:00:44 +0000 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2d46d729d89so4843731fa.3 for ; Wed, 13 Mar 2024 16:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710370837; x=1710975637; 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=8VPJPxTey+sc2xXisziYil5K/e6BZgTnINfhId+0h4A=; b=c6ev4u/Rsu/L3bSV7uR+9f79OfhdY3e6icnq22USDIj8TKUBTj7VwuGOV+L6Q4lm3y RbrskXlx5HsFpusLMYM2jLIhv4HMdXdx+jKZHCQEX4pTwmwvde4NneGBgW4YN4o1KTBO rVtwiq6j5Gpw+thNVX+ura55IhldEPj/0lpKqe93IxaOB7wUwzfdP53kOCxIrxvTeJ1J gTzULj+naBGEfg+2ZHwbnb/iMrwi1Imo/7AHKVpREm0FZQjiodc6zeJ68f3IS9vHkrbl hg7Bd/zJkdF+Mh5gg9TxjdPlLpdH9VlyfpPCGXngO0CTzJuUne0XDI/0+1o3AtlKVCR7 tNLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710370837; x=1710975637; 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=8VPJPxTey+sc2xXisziYil5K/e6BZgTnINfhId+0h4A=; b=sUUzMIuEzTgpNpA2Ed8LECEmwF5fdyN9nEvGPvEkHlI/8NlvEfEazVD+dbIkF5gSjj 5NviWMCfIwKyjpkUPwUo9JEsTCPqfNW4PP96TJheFpMcNGkG+LnAoQefZLmxaFPT4fh5 44T+PWWxG/6MfcT9EVJpSuko//wdndK6iBTMfxf3lJ971/+oCf5Uww5lHSPNwSz3lc/s qtfQVBA9oIzRBdrK1xYKBrc0GA+3MllgS8X9mhEfKEtu1qvUqUso4iCh/G5av96B1YNh q1WVanniK6wOuzC7hdc2gmOu3+z2chHhbyMcbPfSv/WZjklinmFUX9KawiqYOM36OFDx qzPA== X-Forwarded-Encrypted: i=1; AJvYcCVdIMZBFzUBRP+xo/zudTXBFxg2oJqNQtNrcUemYmlOl0bxG34036bFv9jua2U0Q11xi50dEwukzEpM19d7L9cpuC1aHLhgHcAfMjbQZlnrQcSn X-Gm-Message-State: AOJu0YxE1NT2i29q3spUD8ate239Pz49Kj8yRUSEEflO2GF2D7pkZHJ/ oYpB1tmEmkWoCcvJ6l6Nc5od3E+nPiddYhJHmfLeebMXaXJPdxc0rVb9c7EQUxHxhwwUAShGKi1 OG/zp9Ro8XVjiYZ9o6HK/T5+kDeE= X-Google-Smtp-Source: AGHT+IHfU1/Yp+3ThBbpH/Q7p+B4TobLBl3zDNSQzOCUpq+RR1IqjBPXLCjHuxFMLHKszvKm05PEOg4kBOddsG6mn+4= X-Received: by 2002:a2e:968d:0:b0:2d4:7218:4cf1 with SMTP id q13-20020a2e968d000000b002d472184cf1mr850598lji.7.1710370837148; Wed, 13 Mar 2024 16:00:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Rowley Date: Thu, 14 Mar 2024 12:00:24 +1300 Message-ID: Subject: Re: pg16: XX000: could not find pathkey item to sort To: Alexander Lakhin , Robert Haas , Ashutosh Bapat Cc: Richard Guo , Justin Pryzby , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002ed10b061392be13" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002ed10b061392be13 Content-Type: text/plain; charset="UTF-8" On Thu, 14 Mar 2024 at 06:00, Alexander Lakhin wrote: > I've stumbled upon the same error, but this time it apparently has another > cause. It can be produced (on REL_16_STABLE and master) as follows: > CREATE TABLE t (a int, b int) PARTITION BY RANGE (a); > CREATE TABLE td PARTITION OF t DEFAULT; > CREATE TABLE tp1 PARTITION OF t FOR VALUES FROM (1) TO (2); > SET enable_partitionwise_aggregate = on; > SET parallel_setup_cost = 0; > SELECT a, sum(b order by b) FROM t GROUP BY a ORDER BY a; > > ERROR: could not find pathkey item to sort > > `git bisect` for this anomaly blames the same commit 1349d2790. Thanks for finding and for the recreator script. I've attached a patch which fixes the problem for me. On debugging this I uncovered some other stuff that looks broken which seems to caused by partition-wise aggregates. With your example query, in get_useful_pathkeys_for_relation(), we call relation_can_be_sorted_early() to check if the pathkey can be used as a set of pathkeys in useful_pathkeys_list. The problem is that in your query the 'rel' is the base relation belonging to the partitioned table and relation_can_be_sorted_early() looks through the targetlist for that relation and finds columns "a" and "b" in there. The problem is "b" has been aggregated away as partial aggregation has taken place due to the partition-wise aggregation. I believe whichever rel we should be using there should have an Aggref in the target exprs rather than the plain unaggregated column. I've added Robert and Ashutosh to see what their thoughts are on this. David --0000000000002ed10b061392be13 Content-Type: text/plain; charset="US-ASCII"; name="fix_groupby_pathkeys.patch" Content-Disposition: attachment; filename="fix_groupby_pathkeys.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltqe6xtv0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NDNhYjA4ZDc1Li5lYWJhNmRk YzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03MzIwLDYgKzczMjAs MTUgQEAgZ2F0aGVyX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJUGF0aAkgICAqY2hlYXBlc3RfcGFydGlhbF9w YXRoOworCUxpc3QJICAgKmdyb3VwYnlfcGF0aGtleXM7CisKKworCS8qIHRyaW0gb2ZmIGFueSBw YXRoa2V5cyBhZGRlZCBmb3IgT1JERVIgQlkgLyBESVNUSU5DVCBhZ2dyZWdhdGVzICovCisJaWYg KGxpc3RfbGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSA+IHJvb3QtPm51bV9ncm91cGJ5X3Bh dGhrZXlzKQorCQlncm91cGJ5X3BhdGhrZXlzID0gbGlzdF9jb3B5X2hlYWQocm9vdC0+Z3JvdXBf cGF0aGtleXMsCisJCQkJCQkJCQkJICByb290LT5udW1fZ3JvdXBieV9wYXRoa2V5cyk7CisJZWxz ZQorCQlncm91cGJ5X3BhdGhrZXlzID0gcm9vdC0+Z3JvdXBfcGF0aGtleXM7CiAKIAkvKiBUcnkg R2F0aGVyIGZvciB1bm9yZGVyZWQgcGF0aHMgYW5kIEdhdGhlciBNZXJnZSBmb3Igb3JkZXJlZCBv bmVzLiAqLwogCWdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0aHMocm9vdCwgcmVsLCB0cnVlKTsK QEAgLTczMzQsNyArNzM0Myw3IEBAIGdhdGhlcl9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKIAkJZG91Ymxl CQl0b3RhbF9ncm91cHM7CiAKLQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291bnRfY29udGFpbmVk X2luKHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9j b250YWluZWRfaW4oZ3JvdXBieV9wYXRoa2V5cywKIAkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlz LAogCQkJCQkJCQkJCQkJJnByZXNvcnRlZF9rZXlzKTsKIApAQCAtNzM2Niw3ICs3Mzc1LDcgQEAg Z2F0aGVyX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwp CiAJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAog CQkJCQkJCQkJCQkJCQkgcmVsLAogCQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJCQkJ IHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkgZ3JvdXBieV9wYXRoa2V5cywK IAkJCQkJCQkJCQkJCQkJIHByZXNvcnRlZF9rZXlzLAogCQkJCQkJCQkJCQkJCQkgLTEuMCk7CiAK QEAgLTczNzUsNyArNzM4NCw3IEBAIGdhdGhlcl9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCQkJCQkJCQkJIHJlbCwKIAkJCQkJCQkJCSBwYXRoLAog CQkJCQkJCQkJIHJlbC0+cmVsdGFyZ2V0LAotCQkJCQkJCQkJIHJvb3QtPmdyb3VwX3BhdGhrZXlz LAorCQkJCQkJCQkJIGdyb3VwYnlfcGF0aGtleXMsCiAJCQkJCQkJCQkgTlVMTCwKIAkJCQkJCQkJ CSAmdG90YWxfZ3JvdXBzKTsKIAo= --0000000000002ed10b061392be13--