Re: pruning disabled for array, enum, record, range type partition keys
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-04-17T22:11:18Z
Lists: pgsql-hackers
Attachments
- compfuncs-delta.patch (text/plain) patch
- v3-0001-Fix-pruning-code-to-determine-comparison-function.patch (text/plain) patch v3-0001
Amit Langote wrote: > Ah, I think I got it after staring at the (btree) index code for a bit. > > What pruning code got wrong is that it's comparing the expression type > (type of the constant arg that will be compared with partition bound > datums when pruning) with the partopcintype to determine if we should look > up the cross-type comparison/hashing procedure, whereas what the latter > should be compare with is the clause operator's oprighttype. ISTM, if > op_in_opfamily() passed for the operator, that's the correct thing to do. I wonder why you left out the hash partitioning case? I don't really know that this is correct, but here's a delta patch as demonstration. (v3 is your patch, I think the only change is I renamed the tables used in the test) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Rework code to determine partition pruning procedure
- e5dcbb88a15d 11.0 landed