summaryrefslogtreecommitdiff
path: root/src/include/catalog/pg_amproc.h
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2015-05-07 13:02:22 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2015-05-07 13:02:22 -0300
commitdb5f98ab4fa44bc563ec62d7b1aada4fc276d9b2 (patch)
tree0b05cf901eed7ffab21935a5f6491e8215bbe670 /src/include/catalog/pg_amproc.h
parent7be47c56af3d3013955c91c2877c08f2a0e3e6a2 (diff)
downloadpostgresql-db5f98ab4fa44bc563ec62d7b1aada4fc276d9b2.tar.gz
Improve BRIN infra, minmax opclass and regression test
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.
Diffstat (limited to 'src/include/catalog/pg_amproc.h')
-rw-r--r--src/include/catalog/pg_amproc.h164
1 files changed, 0 insertions, 164 deletions
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index a54d11fdbd..e3de3b57e7 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -443,360 +443,196 @@ DATA(insert ( 4064 17 17 1 3383 ));
DATA(insert ( 4064 17 17 2 3384 ));
DATA(insert ( 4064 17 17 3 3385 ));
DATA(insert ( 4064 17 17 4 3386 ));
-DATA(insert ( 4064 17 17 11 1949 ));
-DATA(insert ( 4064 17 17 12 1950 ));
-DATA(insert ( 4064 17 17 13 1952 ));
-DATA(insert ( 4064 17 17 14 1951 ));
/* minmax "char" */
DATA(insert ( 4062 18 18 1 3383 ));
DATA(insert ( 4062 18 18 2 3384 ));
DATA(insert ( 4062 18 18 3 3385 ));
DATA(insert ( 4062 18 18 4 3386 ));
-DATA(insert ( 4062 18 18 11 1246 ));
-DATA(insert ( 4062 18 18 12 72 ));
-DATA(insert ( 4062 18 18 13 74 ));
-DATA(insert ( 4062 18 18 14 73 ));
/* minmax name */
DATA(insert ( 4065 19 19 1 3383 ));
DATA(insert ( 4065 19 19 2 3384 ));
DATA(insert ( 4065 19 19 3 3385 ));
DATA(insert ( 4065 19 19 4 3386 ));
-DATA(insert ( 4065 19 19 11 655 ));
-DATA(insert ( 4065 19 19 12 656 ));
-DATA(insert ( 4065 19 19 13 658 ));
-DATA(insert ( 4065 19 19 14 657 ));
/* minmax integer: int2, int4, int8 */
DATA(insert ( 4054 20 20 1 3383 ));
DATA(insert ( 4054 20 20 2 3384 ));
DATA(insert ( 4054 20 20 3 3385 ));
DATA(insert ( 4054 20 20 4 3386 ));
-DATA(insert ( 4054 20 20 11 469 ));
-DATA(insert ( 4054 20 20 12 471 ));
-DATA(insert ( 4054 20 20 13 472 ));
-DATA(insert ( 4054 20 20 14 470 ));
DATA(insert ( 4054 20 21 1 3383 ));
DATA(insert ( 4054 20 21 2 3384 ));
DATA(insert ( 4054 20 21 3 3385 ));
DATA(insert ( 4054 20 21 4 3386 ));
-DATA(insert ( 4054 20 21 11 1858 ));
-DATA(insert ( 4054 20 21 12 1860 ));
-DATA(insert ( 4054 20 21 13 1861 ));
-DATA(insert ( 4054 20 21 14 1859 ));
DATA(insert ( 4054 20 23 1 3383 ));
DATA(insert ( 4054 20 23 2 3384 ));
DATA(insert ( 4054 20 23 3 3385 ));
DATA(insert ( 4054 20 23 4 3386 ));
-DATA(insert ( 4054 20 23 11 476 ));
-DATA(insert ( 4054 20 23 12 478 ));
-DATA(insert ( 4054 20 23 13 479 ));
-DATA(insert ( 4054 20 23 14 477 ));
DATA(insert ( 4054 21 21 1 3383 ));
DATA(insert ( 4054 21 21 2 3384 ));
DATA(insert ( 4054 21 21 3 3385 ));
DATA(insert ( 4054 21 21 4 3386 ));
-DATA(insert ( 4054 21 21 11 64 ));
-DATA(insert ( 4054 21 21 12 148 ));
-DATA(insert ( 4054 21 21 13 151 ));
-DATA(insert ( 4054 21 21 14 146 ));
DATA(insert ( 4054 21 20 1 3383 ));
DATA(insert ( 4054 21 20 2 3384 ));
DATA(insert ( 4054 21 20 3 3385 ));
DATA(insert ( 4054 21 20 4 3386 ));
-DATA(insert ( 4054 21 20 11 1852 ));
-DATA(insert ( 4054 21 20 12 1854 ));
-DATA(insert ( 4054 21 20 13 1855 ));
-DATA(insert ( 4054 21 20 14 1853 ));
DATA(insert ( 4054 21 23 1 3383 ));
DATA(insert ( 4054 21 23 2 3384 ));
DATA(insert ( 4054 21 23 3 3385 ));
DATA(insert ( 4054 21 23 4 3386 ));
-DATA(insert ( 4054 21 23 11 160 ));
-DATA(insert ( 4054 21 23 12 166 ));
-DATA(insert ( 4054 21 23 13 168 ));
-DATA(insert ( 4054 21 23 14 162 ));
DATA(insert ( 4054 23 23 1 3383 ));
DATA(insert ( 4054 23 23 2 3384 ));
DATA(insert ( 4054 23 23 3 3385 ));
DATA(insert ( 4054 23 23 4 3386 ));
-DATA(insert ( 4054 23 23 11 66 ));
-DATA(insert ( 4054 23 23 12 149 ));
-DATA(insert ( 4054 23 23 13 150 ));
-DATA(insert ( 4054 23 23 14 147 ));
DATA(insert ( 4054 23 20 1 3383 ));
DATA(insert ( 4054 23 20 2 3384 ));
DATA(insert ( 4054 23 20 3 3385 ));
DATA(insert ( 4054 23 20 4 3386 ));
-DATA(insert ( 4054 23 20 11 854 ));
-DATA(insert ( 4054 23 20 12 856 ));
-DATA(insert ( 4054 23 20 13 857 ));
-DATA(insert ( 4054 23 20 14 855 ));
DATA(insert ( 4054 23 21 1 3383 ));
DATA(insert ( 4054 23 21 2 3384 ));
DATA(insert ( 4054 23 21 3 3385 ));
DATA(insert ( 4054 23 21 4 3386 ));
-DATA(insert ( 4054 23 21 11 161 ));
-DATA(insert ( 4054 23 21 12 167 ));
-DATA(insert ( 4054 23 21 13 169 ));
-DATA(insert ( 4054 23 21 14 163 ));
/* minmax text */
DATA(insert ( 4056 25 25 1 3383 ));
DATA(insert ( 4056 25 25 2 3384 ));
DATA(insert ( 4056 25 25 3 3385 ));
DATA(insert ( 4056 25 25 4 3386 ));
-DATA(insert ( 4056 25 25 11 740 ));
-DATA(insert ( 4056 25 25 12 741 ));
-DATA(insert ( 4056 25 25 13 743 ));
-DATA(insert ( 4056 25 25 14 742 ));
/* minmax oid */
DATA(insert ( 4068 26 26 1 3383 ));
DATA(insert ( 4068 26 26 2 3384 ));
DATA(insert ( 4068 26 26 3 3385 ));
DATA(insert ( 4068 26 26 4 3386 ));
-DATA(insert ( 4068 26 26 11 716 ));
-DATA(insert ( 4068 26 26 12 717 ));
-DATA(insert ( 4068 26 26 13 1639 ));
-DATA(insert ( 4068 26 26 14 1638 ));
/* minmax tid */
DATA(insert ( 4069 27 27 1 3383 ));
DATA(insert ( 4069 27 27 2 3384 ));
DATA(insert ( 4069 27 27 3 3385 ));
DATA(insert ( 4069 27 27 4 3386 ));
-DATA(insert ( 4069 27 27 11 2791 ));
-DATA(insert ( 4069 27 27 12 2793 ));
-DATA(insert ( 4069 27 27 13 2792 ));
-DATA(insert ( 4069 27 27 14 2790 ));
/* minmax float */
DATA(insert ( 4070 700 700 1 3383 ));
DATA(insert ( 4070 700 700 2 3384 ));
DATA(insert ( 4070 700 700 3 3385 ));
DATA(insert ( 4070 700 700 4 3386 ));
-DATA(insert ( 4070 700 700 11 289 ));
-DATA(insert ( 4070 700 700 12 290 ));
-DATA(insert ( 4070 700 700 13 292 ));
-DATA(insert ( 4070 700 700 14 291 ));
DATA(insert ( 4070 700 701 1 3383 ));
DATA(insert ( 4070 700 701 2 3384 ));
DATA(insert ( 4070 700 701 3 3385 ));
DATA(insert ( 4070 700 701 4 3386 ));
-DATA(insert ( 4070 700 701 11 301 ));
-DATA(insert ( 4070 700 701 12 303 ));
-DATA(insert ( 4070 700 701 13 304 ));
-DATA(insert ( 4070 700 701 14 303 ));
DATA(insert ( 4070 701 701 1 3383 ));
DATA(insert ( 4070 701 701 2 3384 ));
DATA(insert ( 4070 701 701 3 3385 ));
DATA(insert ( 4070 701 701 4 3386 ));
-DATA(insert ( 4070 701 701 11 295 ));
-DATA(insert ( 4070 701 701 12 296 ));
-DATA(insert ( 4070 701 701 13 298 ));
-DATA(insert ( 4070 701 701 14 297 ));
DATA(insert ( 4070 701 700 1 3383 ));
DATA(insert ( 4070 701 700 2 3384 ));
DATA(insert ( 4070 701 700 3 3385 ));
DATA(insert ( 4070 701 700 4 3386 ));
-DATA(insert ( 4070 701 700 11 307 ));
-DATA(insert ( 4070 701 700 12 308 ));
-DATA(insert ( 4070 701 700 13 310 ));
-DATA(insert ( 4070 701 700 14 309 ));
/* minmax abstime */
DATA(insert ( 4072 702 702 1 3383 ));
DATA(insert ( 4072 702 702 2 3384 ));
DATA(insert ( 4072 702 702 3 3385 ));
DATA(insert ( 4072 702 702 4 3386 ));
-DATA(insert ( 4072 702 702 11 253 ));
-DATA(insert ( 4072 702 702 12 255 ));
-DATA(insert ( 4072 702 702 13 256 ));
-DATA(insert ( 4072 702 702 14 254 ));
/* minmax reltime */
DATA(insert ( 4073 703 703 1 3383 ));
DATA(insert ( 4073 703 703 2 3384 ));
DATA(insert ( 4073 703 703 3 3385 ));
DATA(insert ( 4073 703 703 4 3386 ));
-DATA(insert ( 4073 703 703 11 259 ));
-DATA(insert ( 4073 703 703 12 261 ));
-DATA(insert ( 4073 703 703 13 262 ));
-DATA(insert ( 4073 703 703 14 260 ));
/* minmax macaddr */
DATA(insert ( 4074 829 829 1 3383 ));
DATA(insert ( 4074 829 829 2 3384 ));
DATA(insert ( 4074 829 829 3 3385 ));
DATA(insert ( 4074 829 829 4 3386 ));
-DATA(insert ( 4074 829 829 11 831 ));
-DATA(insert ( 4074 829 829 12 832 ));
-DATA(insert ( 4074 829 829 13 834 ));
-DATA(insert ( 4074 829 829 14 833 ));
/* minmax inet */
DATA(insert ( 4075 869 869 1 3383 ));
DATA(insert ( 4075 869 869 2 3384 ));
DATA(insert ( 4075 869 869 3 3385 ));
DATA(insert ( 4075 869 869 4 3386 ));
-DATA(insert ( 4075 869 869 11 921 ));
-DATA(insert ( 4075 869 869 12 922 ));
-DATA(insert ( 4075 869 869 13 924 ));
-DATA(insert ( 4075 869 869 14 923 ));
/* minmax character */
DATA(insert ( 4076 1042 1042 1 3383 ));
DATA(insert ( 4076 1042 1042 2 3384 ));
DATA(insert ( 4076 1042 1042 3 3385 ));
DATA(insert ( 4076 1042 1042 4 3386 ));
-DATA(insert ( 4076 1042 1042 11 1049 ));
-DATA(insert ( 4076 1042 1042 12 1050 ));
-DATA(insert ( 4076 1042 1042 13 1052 ));
-DATA(insert ( 4076 1042 1042 14 1051 ));
/* minmax time without time zone */
DATA(insert ( 4077 1083 1083 1 3383 ));
DATA(insert ( 4077 1083 1083 2 3384 ));
DATA(insert ( 4077 1083 1083 3 3385 ));
DATA(insert ( 4077 1083 1083 4 3386 ));
-DATA(insert ( 4077 1083 1083 11 1102 ));
-DATA(insert ( 4077 1083 1083 12 1103 ));
-DATA(insert ( 4077 1083 1083 13 1105 ));
-DATA(insert ( 4077 1083 1083 14 1104 ));
/* minmax datetime (date, timestamp, timestamptz) */
DATA(insert ( 4059 1114 1114 1 3383 ));
DATA(insert ( 4059 1114 1114 2 3384 ));
DATA(insert ( 4059 1114 1114 3 3385 ));
DATA(insert ( 4059 1114 1114 4 3386 ));
-DATA(insert ( 4059 1114 1114 11 2054 ));
-DATA(insert ( 4059 1114 1114 12 2055 ));
-DATA(insert ( 4059 1114 1114 13 2056 ));
-DATA(insert ( 4059 1114 1114 14 2057 ));
DATA(insert ( 4059 1114 1184 1 3383 ));
DATA(insert ( 4059 1114 1184 2 3384 ));
DATA(insert ( 4059 1114 1184 3 3385 ));
DATA(insert ( 4059 1114 1184 4 3386 ));
-DATA(insert ( 4059 1114 1184 11 2520 ));
-DATA(insert ( 4059 1114 1184 12 2521 ));
-DATA(insert ( 4059 1114 1184 13 2524 ));
-DATA(insert ( 4059 1114 1184 14 2523 ));
DATA(insert ( 4059 1114 1082 1 3383 ));
DATA(insert ( 4059 1114 1082 2 3384 ));
DATA(insert ( 4059 1114 1082 3 3385 ));
DATA(insert ( 4059 1114 1082 4 3386 ));
-DATA(insert ( 4059 1114 1082 11 2364 ));
-DATA(insert ( 4059 1114 1082 12 2365 ));
-DATA(insert ( 4059 1114 1082 13 2368 ));
-DATA(insert ( 4059 1114 1082 14 2367 ));
DATA(insert ( 4059 1184 1184 1 3383 ));
DATA(insert ( 4059 1184 1184 2 3384 ));
DATA(insert ( 4059 1184 1184 3 3385 ));
DATA(insert ( 4059 1184 1184 4 3386 ));
-DATA(insert ( 4059 1184 1184 11 1154 ));
-DATA(insert ( 4059 1184 1184 12 1155 ));
-DATA(insert ( 4059 1184 1184 13 1156 ));
-DATA(insert ( 4059 1184 1184 14 1157 ));
DATA(insert ( 4059 1184 1114 1 3383 ));
DATA(insert ( 4059 1184 1114 2 3384 ));
DATA(insert ( 4059 1184 1114 3 3385 ));
DATA(insert ( 4059 1184 1114 4 3386 ));
-DATA(insert ( 4059 1184 1114 11 2527 ));
-DATA(insert ( 4059 1184 1114 12 2528 ));
-DATA(insert ( 4059 1184 1114 13 2531 ));
-DATA(insert ( 4059 1184 1114 14 2530 ));
DATA(insert ( 4059 1184 1082 1 3383 ));
DATA(insert ( 4059 1184 1082 2 3384 ));
DATA(insert ( 4059 1184 1082 3 3385 ));
DATA(insert ( 4059 1184 1082 4 3386 ));
-DATA(insert ( 4059 1184 1082 11 2377 ));
-DATA(insert ( 4059 1184 1082 12 2378 ));
-DATA(insert ( 4059 1184 1082 13 2381 ));
-DATA(insert ( 4059 1184 1082 14 2379 ));
DATA(insert ( 4059 1082 1082 1 3383 ));
DATA(insert ( 4059 1082 1082 2 3384 ));
DATA(insert ( 4059 1082 1082 3 3385 ));
DATA(insert ( 4059 1082 1082 4 3386 ));
-DATA(insert ( 4059 1082 1082 11 1087 ));
-DATA(insert ( 4059 1082 1082 12 1088 ));
-DATA(insert ( 4059 1082 1082 13 1090 ));
-DATA(insert ( 4059 1082 1082 14 1089 ));
DATA(insert ( 4059 1082 1114 1 3383 ));
DATA(insert ( 4059 1082 1114 2 3384 ));
DATA(insert ( 4059 1082 1114 3 3385 ));
DATA(insert ( 4059 1082 1114 4 3386 ));
-DATA(insert ( 4059 1082 1114 11 2338 ));
-DATA(insert ( 4059 1082 1114 12 2339 ));
-DATA(insert ( 4059 1082 1114 13 2342 ));
-DATA(insert ( 4059 1082 1114 14 2341 ));
DATA(insert ( 4059 1082 1184 1 3383 ));
DATA(insert ( 4059 1082 1184 2 3384 ));
DATA(insert ( 4059 1082 1184 3 3385 ));
DATA(insert ( 4059 1082 1184 4 3386 ));
-DATA(insert ( 4059 1082 1184 11 2351 ));
-DATA(insert ( 4059 1082 1184 12 2352 ));
-DATA(insert ( 4059 1082 1184 13 2354 ));
-DATA(insert ( 4059 1082 1184 14 2353 ));
/* minmax interval */
DATA(insert ( 4078 1186 1186 1 3383 ));
DATA(insert ( 4078 1186 1186 2 3384 ));
DATA(insert ( 4078 1186 1186 3 3385 ));
DATA(insert ( 4078 1186 1186 4 3386 ));
-DATA(insert ( 4078 1186 1186 11 1164 ));
-DATA(insert ( 4078 1186 1186 12 1165 ));
-DATA(insert ( 4078 1186 1186 13 1166 ));
-DATA(insert ( 4078 1186 1186 14 1167 ));
/* minmax time with time zone */
DATA(insert ( 4058 1266 1266 1 3383 ));
DATA(insert ( 4058 1266 1266 2 3384 ));
DATA(insert ( 4058 1266 1266 3 3385 ));
DATA(insert ( 4058 1266 1266 4 3386 ));
-DATA(insert ( 4058 1266 1266 11 1354 ));
-DATA(insert ( 4058 1266 1266 12 1355 ));
-DATA(insert ( 4058 1266 1266 13 1356 ));
-DATA(insert ( 4058 1266 1266 14 1357 ));
/* minmax bit */
DATA(insert ( 4079 1560 1560 1 3383 ));
DATA(insert ( 4079 1560 1560 2 3384 ));
DATA(insert ( 4079 1560 1560 3 3385 ));
DATA(insert ( 4079 1560 1560 4 3386 ));
-DATA(insert ( 4079 1560 1560 11 1595 ));
-DATA(insert ( 4079 1560 1560 12 1594 ));
-DATA(insert ( 4079 1560 1560 13 1592 ));
-DATA(insert ( 4079 1560 1560 14 1593 ));
/* minmax bit varying */
DATA(insert ( 4080 1562 1562 1 3383 ));
DATA(insert ( 4080 1562 1562 2 3384 ));
DATA(insert ( 4080 1562 1562 3 3385 ));
DATA(insert ( 4080 1562 1562 4 3386 ));
-DATA(insert ( 4080 1562 1562 11 1671 ));
-DATA(insert ( 4080 1562 1562 12 1670 ));
-DATA(insert ( 4080 1562 1562 13 1668 ));
-DATA(insert ( 4080 1562 1562 14 1669 ));
/* minmax numeric */
DATA(insert ( 4055 1700 1700 1 3383 ));
DATA(insert ( 4055 1700 1700 2 3384 ));
DATA(insert ( 4055 1700 1700 3 3385 ));
DATA(insert ( 4055 1700 1700 4 3386 ));
-DATA(insert ( 4055 1700 1700 11 1722 ));
-DATA(insert ( 4055 1700 1700 12 1723 ));
-DATA(insert ( 4055 1700 1700 13 1721 ));
-DATA(insert ( 4055 1700 1700 14 1720 ));
/* minmax uuid */
DATA(insert ( 4081 2950 2950 1 3383 ));
DATA(insert ( 4081 2950 2950 2 3384 ));
DATA(insert ( 4081 2950 2950 3 3385 ));
DATA(insert ( 4081 2950 2950 4 3386 ));
-DATA(insert ( 4081 2950 2950 11 2954 ));
-DATA(insert ( 4081 2950 2950 12 2955 ));
-DATA(insert ( 4081 2950 2950 13 2957 ));
-DATA(insert ( 4081 2950 2950 14 2958 ));
/* minmax pg_lsn */
DATA(insert ( 4082 3220 3220 1 3383 ));
DATA(insert ( 4082 3220 3220 2 3384 ));
DATA(insert ( 4082 3220 3220 3 3385 ));
DATA(insert ( 4082 3220 3220 4 3386 ));
-DATA(insert ( 4082 3220 3220 11 3231 ));
-DATA(insert ( 4082 3220 3220 12 3232 ));
-DATA(insert ( 4082 3220 3220 13 3234 ));
-DATA(insert ( 4082 3220 3220 14 3235 ));
#endif /* PG_AMPROC_H */