mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
db5f98ab4f
The minmax opclass was using the wrong support functions when cross-datatypes queries were run. Instead of trying to fix the pg_amproc definitions (which apparently is not possible), use the already correct pg_amop entries instead. This requires jumping through more hoops (read: extra syscache lookups) to obtain the underlying functions to execute, but it is necessary for correctness. Author: Emre Hasegeli, tweaked by Álvaro Review: Andreas Karlsson Also change BrinOpcInfo to record each stored type's typecache entry instead of just the OID. Turns out that the full type cache is necessary in brin_deform_tuple: the original code used the indexed type's byval and typlen properties to extract the stored tuple, which is correct in Minmax; but in other implementations that want to store something different, that's wrong. The realization that this is a bug comes from Emre also, but I did not use his patch. I also adopted Emre's regression test code (with smallish changes), which is more complete. |
||
---|---|---|
.. | ||
brinfuncs.c | ||
btreefuncs.c | ||
fsmfuncs.c | ||
ginfuncs.c | ||
heapfuncs.c | ||
Makefile | ||
pageinspect--1.0--1.1.sql | ||
pageinspect--1.1--1.2.sql | ||
pageinspect--1.2--1.3.sql | ||
pageinspect--1.3.sql | ||
pageinspect--unpackaged--1.0.sql | ||
pageinspect.control | ||
rawpage.c |