Skip to content

Commit 816e10d

Browse files
committed
Fix BRIN operator family definitions
The original definitions were leaving no room for cross-type operators, so queries that compared a column of one type against something of a different type were not taking advantage of the index. Fix by making the opfamilies more like the ones for Btree, and include a few cross-type operator classes. Catalog version bumped. Per complaints from Hubert Lubaczewski, Mark Wong, Heikki Linnakangas.
1 parent ae04bf5 commit 816e10d

File tree

5 files changed

+275
-95
lines changed

5 files changed

+275
-95
lines changed

src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 201411271
56+
#define CATALOG_VERSION_NO 201411281
5757

5858
#endif

src/include/catalog/pg_amop.h

Lines changed: 100 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -864,24 +864,53 @@ DATA(insert ( 4065 19 19 2 s 661 3580 0 ));
864864
DATA(insert ( 4065 19 19 3 s 93 3580 0 ));
865865
DATA(insert ( 4065 19 19 4 s 663 3580 0 ));
866866
DATA(insert ( 4065 19 19 5 s 662 3580 0 ));
867-
/* minmax bigint */
868-
DATA(insert ( 4063 20 20 1 s 412 3580 0 ));
869-
DATA(insert ( 4063 20 20 2 s 414 3580 0 ));
870-
DATA(insert ( 4063 20 20 3 s 410 3580 0 ));
871-
DATA(insert ( 4063 20 20 4 s 415 3580 0 ));
872-
DATA(insert ( 4063 20 20 5 s 413 3580 0 ));
873-
/* minmax smallint */
874-
DATA(insert ( 4067 21 21 1 s 95 3580 0 ));
875-
DATA(insert ( 4067 21 21 2 s 522 3580 0 ));
876-
DATA(insert ( 4067 21 21 3 s 94 3580 0 ));
877-
DATA(insert ( 4067 21 21 4 s 524 3580 0 ));
878-
DATA(insert ( 4067 21 21 5 s 520 3580 0 ));
879867
/* minmax integer */
868+
DATA(insert ( 4054 20 20 1 s 412 3580 0 ));
869+
DATA(insert ( 4054 20 20 2 s 414 3580 0 ));
870+
DATA(insert ( 4054 20 20 3 s 410 3580 0 ));
871+
DATA(insert ( 4054 20 20 4 s 415 3580 0 ));
872+
DATA(insert ( 4054 20 20 5 s 413 3580 0 ));
873+
DATA(insert ( 4054 20 21 1 s 1870 3580 0 ));
874+
DATA(insert ( 4054 20 21 2 s 1872 3580 0 ));
875+
DATA(insert ( 4054 20 21 3 s 1868 3580 0 ));
876+
DATA(insert ( 4054 20 21 4 s 1873 3580 0 ));
877+
DATA(insert ( 4054 20 21 5 s 1871 3580 0 ));
878+
DATA(insert ( 4054 20 23 1 s 418 3580 0 ));
879+
DATA(insert ( 4054 20 23 2 s 420 3580 0 ));
880+
DATA(insert ( 4054 20 23 3 s 416 3580 0 ));
881+
DATA(insert ( 4054 20 23 4 s 430 3580 0 ));
882+
DATA(insert ( 4054 20 23 5 s 419 3580 0 ));
883+
DATA(insert ( 4054 21 21 1 s 95 3580 0 ));
884+
DATA(insert ( 4054 21 21 2 s 522 3580 0 ));
885+
DATA(insert ( 4054 21 21 3 s 94 3580 0 ));
886+
DATA(insert ( 4054 21 21 4 s 524 3580 0 ));
887+
DATA(insert ( 4054 21 21 5 s 520 3580 0 ));
888+
DATA(insert ( 4054 21 20 1 s 1864 3580 0 ));
889+
DATA(insert ( 4054 21 20 2 s 1866 3580 0 ));
890+
DATA(insert ( 4054 21 20 3 s 1862 3580 0 ));
891+
DATA(insert ( 4054 21 20 4 s 1867 3580 0 ));
892+
DATA(insert ( 4054 21 20 5 s 1865 3580 0 ));
893+
DATA(insert ( 4054 21 23 1 s 534 3580 0 ));
894+
DATA(insert ( 4054 21 23 2 s 540 3580 0 ));
895+
DATA(insert ( 4054 21 23 3 s 532 3580 0 ));
896+
DATA(insert ( 4054 21 23 4 s 542 3580 0 ));
897+
DATA(insert ( 4054 21 23 5 s 536 3580 0 ));
880898
DATA(insert ( 4054 23 23 1 s 97 3580 0 ));
881899
DATA(insert ( 4054 23 23 2 s 523 3580 0 ));
882900
DATA(insert ( 4054 23 23 3 s 96 3580 0 ));
883901
DATA(insert ( 4054 23 23 4 s 525 3580 0 ));
884902
DATA(insert ( 4054 23 23 5 s 521 3580 0 ));
903+
DATA(insert ( 4054 23 21 1 s 535 3580 0 ));
904+
DATA(insert ( 4054 23 21 2 s 541 3580 0 ));
905+
DATA(insert ( 4054 23 21 3 s 533 3580 0 ));
906+
DATA(insert ( 4054 23 21 4 s 543 3580 0 ));
907+
DATA(insert ( 4054 23 21 5 s 537 3580 0 ));
908+
DATA(insert ( 4054 23 20 1 s 37 3580 0 ));
909+
DATA(insert ( 4054 23 20 2 s 80 3580 0 ));
910+
DATA(insert ( 4054 23 20 3 s 15 3580 0 ));
911+
DATA(insert ( 4054 23 20 4 s 82 3580 0 ));
912+
DATA(insert ( 4054 23 20 5 s 76 3580 0 ));
913+
885914
/* minmax text */
886915
DATA(insert ( 4056 25 25 1 s 664 3580 0 ));
887916
DATA(insert ( 4056 25 25 2 s 665 3580 0 ));
@@ -900,18 +929,28 @@ DATA(insert ( 4069 27 27 2 s 2801 3580 0 ));
900929
DATA(insert ( 4069 27 27 3 s 387 3580 0 ));
901930
DATA(insert ( 4069 27 27 4 s 2802 3580 0 ));
902931
DATA(insert ( 4069 27 27 5 s 2800 3580 0 ));
903-
/* minmax real */
932+
/* minmax float (float4, float8) */
904933
DATA(insert ( 4070 700 700 1 s 622 3580 0 ));
905934
DATA(insert ( 4070 700 700 2 s 624 3580 0 ));
906935
DATA(insert ( 4070 700 700 3 s 620 3580 0 ));
907936
DATA(insert ( 4070 700 700 4 s 625 3580 0 ));
908937
DATA(insert ( 4070 700 700 5 s 623 3580 0 ));
909-
/* minmax double precision */
910-
DATA(insert ( 4071 701 701 1 s 672 3580 0 ));
911-
DATA(insert ( 4071 701 701 2 s 673 3580 0 ));
912-
DATA(insert ( 4071 701 701 3 s 670 3580 0 ));
913-
DATA(insert ( 4071 701 701 4 s 675 3580 0 ));
914-
DATA(insert ( 4071 701 701 5 s 674 3580 0 ));
938+
DATA(insert ( 4070 700 701 1 s 1122 3580 0 ));
939+
DATA(insert ( 4070 700 701 2 s 1124 3580 0 ));
940+
DATA(insert ( 4070 700 701 3 s 1120 3580 0 ));
941+
DATA(insert ( 4070 700 701 4 s 1125 3580 0 ));
942+
DATA(insert ( 4070 700 701 5 s 1123 3580 0 ));
943+
DATA(insert ( 4070 701 700 1 s 1132 3580 0 ));
944+
DATA(insert ( 4070 701 700 2 s 1134 3580 0 ));
945+
DATA(insert ( 4070 701 700 3 s 1130 3580 0 ));
946+
DATA(insert ( 4070 701 700 4 s 1135 3580 0 ));
947+
DATA(insert ( 4070 701 700 5 s 1133 3580 0 ));
948+
DATA(insert ( 4070 701 701 1 s 672 3580 0 ));
949+
DATA(insert ( 4070 701 701 2 s 673 3580 0 ));
950+
DATA(insert ( 4070 701 701 3 s 670 3580 0 ));
951+
DATA(insert ( 4070 701 701 4 s 675 3580 0 ));
952+
DATA(insert ( 4070 701 701 5 s 674 3580 0 ));
953+
915954
/* minmax abstime */
916955
DATA(insert ( 4072 702 702 1 s 562 3580 0 ));
917956
DATA(insert ( 4072 702 702 2 s 564 3580 0 ));
@@ -942,30 +981,59 @@ DATA(insert ( 4076 1042 1042 2 s 1059 3580 0 ));
942981
DATA(insert ( 4076 1042 1042 3 s 1054 3580 0 ));
943982
DATA(insert ( 4076 1042 1042 4 s 1061 3580 0 ));
944983
DATA(insert ( 4076 1042 1042 5 s 1060 3580 0 ));
945-
/* minmax date */
946-
DATA(insert ( 4061 1082 1082 1 s 1095 3580 0 ));
947-
DATA(insert ( 4061 1082 1082 2 s 1096 3580 0 ));
948-
DATA(insert ( 4061 1082 1082 3 s 1093 3580 0 ));
949-
DATA(insert ( 4061 1082 1082 4 s 1098 3580 0 ));
950-
DATA(insert ( 4061 1082 1082 5 s 1097 3580 0 ));
951984
/* minmax time without time zone */
952985
DATA(insert ( 4077 1083 1083 1 s 1110 3580 0 ));
953986
DATA(insert ( 4077 1083 1083 2 s 1111 3580 0 ));
954987
DATA(insert ( 4077 1083 1083 3 s 1108 3580 0 ));
955988
DATA(insert ( 4077 1083 1083 4 s 1113 3580 0 ));
956989
DATA(insert ( 4077 1083 1083 5 s 1112 3580 0 ));
957-
/* minmax timestamp without time zone */
990+
/* minmax datetime (date, timestamp, timestamptz) */
958991
DATA(insert ( 4059 1114 1114 1 s 2062 3580 0 ));
959992
DATA(insert ( 4059 1114 1114 2 s 2063 3580 0 ));
960993
DATA(insert ( 4059 1114 1114 3 s 2060 3580 0 ));
961994
DATA(insert ( 4059 1114 1114 4 s 2065 3580 0 ));
962995
DATA(insert ( 4059 1114 1114 5 s 2064 3580 0 ));
963-
/* minmax timestamp with time zone */
964-
DATA(insert ( 4060 1184 1184 1 s 1322 3580 0 ));
965-
DATA(insert ( 4060 1184 1184 2 s 1323 3580 0 ));
966-
DATA(insert ( 4060 1184 1184 3 s 1320 3580 0 ));
967-
DATA(insert ( 4060 1184 1184 4 s 1325 3580 0 ));
968-
DATA(insert ( 4060 1184 1184 5 s 1324 3580 0 ));
996+
DATA(insert ( 4059 1114 1082 1 s 2371 3580 0 ));
997+
DATA(insert ( 4059 1114 1082 2 s 2372 3580 0 ));
998+
DATA(insert ( 4059 1114 1082 3 s 2373 3580 0 ));
999+
DATA(insert ( 4059 1114 1082 4 s 2374 3580 0 ));
1000+
DATA(insert ( 4059 1114 1082 5 s 2375 3580 0 ));
1001+
DATA(insert ( 4059 1114 1184 1 s 2534 3580 0 ));
1002+
DATA(insert ( 4059 1114 1184 2 s 2535 3580 0 ));
1003+
DATA(insert ( 4059 1114 1184 3 s 2536 3580 0 ));
1004+
DATA(insert ( 4059 1114 1184 4 s 2537 3580 0 ));
1005+
DATA(insert ( 4059 1114 1184 5 s 2538 3580 0 ));
1006+
DATA(insert ( 4059 1082 1082 1 s 1095 3580 0 ));
1007+
DATA(insert ( 4059 1082 1082 2 s 1096 3580 0 ));
1008+
DATA(insert ( 4059 1082 1082 3 s 1093 3580 0 ));
1009+
DATA(insert ( 4059 1082 1082 4 s 1098 3580 0 ));
1010+
DATA(insert ( 4059 1082 1082 5 s 1097 3580 0 ));
1011+
DATA(insert ( 4059 1082 1114 1 s 2345 3580 0 ));
1012+
DATA(insert ( 4059 1082 1114 2 s 2346 3580 0 ));
1013+
DATA(insert ( 4059 1082 1114 3 s 2347 3580 0 ));
1014+
DATA(insert ( 4059 1082 1114 4 s 2348 3580 0 ));
1015+
DATA(insert ( 4059 1082 1114 5 s 2349 3580 0 ));
1016+
DATA(insert ( 4059 1082 1184 1 s 2358 3580 0 ));
1017+
DATA(insert ( 4059 1082 1184 2 s 2359 3580 0 ));
1018+
DATA(insert ( 4059 1082 1184 3 s 2360 3580 0 ));
1019+
DATA(insert ( 4059 1082 1184 4 s 2361 3580 0 ));
1020+
DATA(insert ( 4059 1082 1184 5 s 2362 3580 0 ));
1021+
DATA(insert ( 4059 1184 1082 1 s 2384 3580 0 ));
1022+
DATA(insert ( 4059 1184 1082 2 s 2385 3580 0 ));
1023+
DATA(insert ( 4059 1184 1082 3 s 2386 3580 0 ));
1024+
DATA(insert ( 4059 1184 1082 4 s 2387 3580 0 ));
1025+
DATA(insert ( 4059 1184 1082 5 s 2388 3580 0 ));
1026+
DATA(insert ( 4059 1184 1114 1 s 2540 3580 0 ));
1027+
DATA(insert ( 4059 1184 1114 2 s 2541 3580 0 ));
1028+
DATA(insert ( 4059 1184 1114 3 s 2542 3580 0 ));
1029+
DATA(insert ( 4059 1184 1114 4 s 2543 3580 0 ));
1030+
DATA(insert ( 4059 1184 1114 5 s 2544 3580 0 ));
1031+
DATA(insert ( 4059 1184 1184 1 s 1322 3580 0 ));
1032+
DATA(insert ( 4059 1184 1184 2 s 1323 3580 0 ));
1033+
DATA(insert ( 4059 1184 1184 3 s 1320 3580 0 ));
1034+
DATA(insert ( 4059 1184 1184 4 s 1325 3580 0 ));
1035+
DATA(insert ( 4059 1184 1184 5 s 1324 3580 0 ));
1036+
9691037
/* minmax interval */
9701038
DATA(insert ( 4078 1186 1186 1 s 1332 3580 0 ));
9711039
DATA(insert ( 4078 1186 1186 2 s 1333 3580 0 ));

0 commit comments

Comments
 (0)