diff --git a/src/backend/access/gin/ginarrayproc.c b/src/backend/access/gin/ginarrayproc.c index 99156791420307cea725e3ee98c4eac488e0bd8b..97b3feefdaa80d1f71be491a99b2ea0d0c2e627e 100644 --- a/src/backend/access/gin/ginarrayproc.c +++ b/src/backend/access/gin/ginarrayproc.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginarrayproc.c,v 1.2 2006/07/11 17:04:12 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginarrayproc.c,v 1.3 2006/07/11 19:49:13 teodor Exp $ *------------------------------------------------------------------------- */ @@ -28,6 +28,7 @@ #define GinOverlapStrategy 1 #define GinContainsStrategy 2 #define GinContainedStrategy 3 +#define GinEqualStrategy 4 #define ARRAYCHECK(x) do { \ if ( ARR_HASNULL(x) ) \ @@ -86,6 +87,7 @@ ginarrayconsistent(PG_FUNCTION_ARGS) { res = TRUE; break; case GinContainsStrategy: + case GinEqualStrategy: res = TRUE; for(i=0;i<nentries;i++) if ( !check[i] ) { diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 0d62211f28a8dc5896b347c9b59ba028bd76a3b8..6edcacc0f546b9fdb20d945a01502850ddf053cd 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -37,7 +37,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.337 2006/07/10 16:20:51 alvherre Exp $ + * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.338 2006/07/11 19:49:13 teodor Exp $ * *------------------------------------------------------------------------- */ @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 200607101 +#define CATALOG_VERSION_NO 200607111 #endif diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h index 89ce00ae648fc90183c721d10fcd31505da82d45..27aed661ea6bb87a9f235432208e3fb1d5e1c0de 100644 --- a/src/include/catalog/pg_amop.h +++ b/src/include/catalog/pg_amop.h @@ -23,7 +23,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.71 2006/05/02 15:23:16 teodor Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.72 2006/07/11 19:49:13 teodor Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -642,6 +642,7 @@ DATA(insert ( 2595 0 12 t 2590 )); DATA(insert ( 2745 0 1 f 2750 )); DATA(insert ( 2745 0 2 f 2751 )); DATA(insert ( 2745 0 3 t 2752 )); +DATA(insert ( 2745 0 4 t 1070 )); /* * gin _text_ops @@ -649,6 +650,7 @@ DATA(insert ( 2745 0 3 t 2752 )); DATA(insert ( 2746 0 1 f 2750 )); DATA(insert ( 2746 0 2 f 2751 )); DATA(insert ( 2746 0 3 t 2752 )); +DATA(insert ( 2746 0 4 t 1070 )); /* * gin _abstime_ops @@ -656,6 +658,7 @@ DATA(insert ( 2746 0 3 t 2752 )); DATA(insert ( 2753 0 1 f 2750 )); DATA(insert ( 2753 0 2 f 2751 )); DATA(insert ( 2753 0 3 t 2752 )); +DATA(insert ( 2753 0 4 t 1070 )); /* * gin _bit_ops @@ -663,6 +666,7 @@ DATA(insert ( 2753 0 3 t 2752 )); DATA(insert ( 2754 0 1 f 2750 )); DATA(insert ( 2754 0 2 f 2751 )); DATA(insert ( 2754 0 3 t 2752 )); +DATA(insert ( 2754 0 4 t 1070 )); /* * gin _bool_ops @@ -670,6 +674,7 @@ DATA(insert ( 2754 0 3 t 2752 )); DATA(insert ( 2755 0 1 f 2750 )); DATA(insert ( 2755 0 2 f 2751 )); DATA(insert ( 2755 0 3 t 2752 )); +DATA(insert ( 2755 0 4 t 1070 )); /* * gin _bpchar_ops @@ -677,6 +682,7 @@ DATA(insert ( 2755 0 3 t 2752 )); DATA(insert ( 2756 0 1 f 2750 )); DATA(insert ( 2756 0 2 f 2751 )); DATA(insert ( 2756 0 3 t 2752 )); +DATA(insert ( 2756 0 4 t 1070 )); /* * gin _bytea_ops @@ -684,6 +690,7 @@ DATA(insert ( 2756 0 3 t 2752 )); DATA(insert ( 2757 0 1 f 2750 )); DATA(insert ( 2757 0 2 f 2751 )); DATA(insert ( 2757 0 3 t 2752 )); +DATA(insert ( 2757 0 4 t 1070 )); /* * gin _char_ops @@ -691,6 +698,7 @@ DATA(insert ( 2757 0 3 t 2752 )); DATA(insert ( 2758 0 1 f 2750 )); DATA(insert ( 2758 0 2 f 2751 )); DATA(insert ( 2758 0 3 t 2752 )); +DATA(insert ( 2758 0 4 t 1070 )); /* * gin _cidr_ops @@ -698,6 +706,7 @@ DATA(insert ( 2758 0 3 t 2752 )); DATA(insert ( 2759 0 1 f 2750 )); DATA(insert ( 2759 0 2 f 2751 )); DATA(insert ( 2759 0 3 t 2752 )); +DATA(insert ( 2759 0 4 t 1070 )); /* * gin _date_ops @@ -705,6 +714,7 @@ DATA(insert ( 2759 0 3 t 2752 )); DATA(insert ( 2760 0 1 f 2750 )); DATA(insert ( 2760 0 2 f 2751 )); DATA(insert ( 2760 0 3 t 2752 )); +DATA(insert ( 2760 0 4 t 1070 )); /* * gin _float4_ops @@ -712,6 +722,7 @@ DATA(insert ( 2760 0 3 t 2752 )); DATA(insert ( 2761 0 1 f 2750 )); DATA(insert ( 2761 0 2 f 2751 )); DATA(insert ( 2761 0 3 t 2752 )); +DATA(insert ( 2761 0 4 t 1070 )); /* * gin _float8_ops @@ -719,6 +730,7 @@ DATA(insert ( 2761 0 3 t 2752 )); DATA(insert ( 2762 0 1 f 2750 )); DATA(insert ( 2762 0 2 f 2751 )); DATA(insert ( 2762 0 3 t 2752 )); +DATA(insert ( 2762 0 4 t 1070 )); /* * gin _inet_ops @@ -726,6 +738,7 @@ DATA(insert ( 2762 0 3 t 2752 )); DATA(insert ( 2763 0 1 f 2750 )); DATA(insert ( 2763 0 2 f 2751 )); DATA(insert ( 2763 0 3 t 2752 )); +DATA(insert ( 2763 0 4 t 1070 )); /* * gin _int2_ops @@ -733,6 +746,7 @@ DATA(insert ( 2763 0 3 t 2752 )); DATA(insert ( 2764 0 1 f 2750 )); DATA(insert ( 2764 0 2 f 2751 )); DATA(insert ( 2764 0 3 t 2752 )); +DATA(insert ( 2764 0 4 t 1070 )); /* * gin _int8_ops @@ -740,6 +754,7 @@ DATA(insert ( 2764 0 3 t 2752 )); DATA(insert ( 2765 0 1 f 2750 )); DATA(insert ( 2765 0 2 f 2751 )); DATA(insert ( 2765 0 3 t 2752 )); +DATA(insert ( 2765 0 4 t 1070 )); /* * gin _interval_ops @@ -747,6 +762,7 @@ DATA(insert ( 2765 0 3 t 2752 )); DATA(insert ( 2766 0 1 f 2750 )); DATA(insert ( 2766 0 2 f 2751 )); DATA(insert ( 2766 0 3 t 2752 )); +DATA(insert ( 2766 0 4 t 1070 )); /* * gin _macaddr_ops @@ -754,6 +770,7 @@ DATA(insert ( 2766 0 3 t 2752 )); DATA(insert ( 2767 0 1 f 2750 )); DATA(insert ( 2767 0 2 f 2751 )); DATA(insert ( 2767 0 3 t 2752 )); +DATA(insert ( 2767 0 4 t 1070 )); /* * gin _name_ops @@ -761,6 +778,7 @@ DATA(insert ( 2767 0 3 t 2752 )); DATA(insert ( 2768 0 1 f 2750 )); DATA(insert ( 2768 0 2 f 2751 )); DATA(insert ( 2768 0 3 t 2752 )); +DATA(insert ( 2768 0 4 t 1070 )); /* * gin _numeric_ops @@ -768,6 +786,7 @@ DATA(insert ( 2768 0 3 t 2752 )); DATA(insert ( 2769 0 1 f 2750 )); DATA(insert ( 2769 0 2 f 2751 )); DATA(insert ( 2769 0 3 t 2752 )); +DATA(insert ( 2769 0 4 t 1070 )); /* * gin _oid_ops @@ -775,6 +794,7 @@ DATA(insert ( 2769 0 3 t 2752 )); DATA(insert ( 2770 0 1 f 2750 )); DATA(insert ( 2770 0 2 f 2751 )); DATA(insert ( 2770 0 3 t 2752 )); +DATA(insert ( 2770 0 4 t 1070 )); /* * gin _oidvector_ops @@ -782,6 +802,7 @@ DATA(insert ( 2770 0 3 t 2752 )); DATA(insert ( 2771 0 1 f 2750 )); DATA(insert ( 2771 0 2 f 2751 )); DATA(insert ( 2771 0 3 t 2752 )); +DATA(insert ( 2771 0 4 t 1070 )); /* * gin _time_ops @@ -789,6 +810,7 @@ DATA(insert ( 2771 0 3 t 2752 )); DATA(insert ( 2772 0 1 f 2750 )); DATA(insert ( 2772 0 2 f 2751 )); DATA(insert ( 2772 0 3 t 2752 )); +DATA(insert ( 2772 0 4 t 1070 )); /* * gin _timestamptz_ops @@ -796,6 +818,7 @@ DATA(insert ( 2772 0 3 t 2752 )); DATA(insert ( 2773 0 1 f 2750 )); DATA(insert ( 2773 0 2 f 2751 )); DATA(insert ( 2773 0 3 t 2752 )); +DATA(insert ( 2773 0 4 t 1070 )); /* * gin _timetz_ops @@ -803,6 +826,7 @@ DATA(insert ( 2773 0 3 t 2752 )); DATA(insert ( 2774 0 1 f 2750 )); DATA(insert ( 2774 0 2 f 2751 )); DATA(insert ( 2774 0 3 t 2752 )); +DATA(insert ( 2774 0 4 t 1070 )); /* * gin _varbit_ops @@ -810,6 +834,7 @@ DATA(insert ( 2774 0 3 t 2752 )); DATA(insert ( 2775 0 1 f 2750 )); DATA(insert ( 2775 0 2 f 2751 )); DATA(insert ( 2775 0 3 t 2752 )); +DATA(insert ( 2775 0 4 t 1070 )); /* * gin _varchar_ops @@ -817,6 +842,7 @@ DATA(insert ( 2775 0 3 t 2752 )); DATA(insert ( 2776 0 1 f 2750 )); DATA(insert ( 2776 0 2 f 2751 )); DATA(insert ( 2776 0 3 t 2752 )); +DATA(insert ( 2776 0 4 t 1070 )); /* * gin _timestamp_ops @@ -824,6 +850,7 @@ DATA(insert ( 2776 0 3 t 2752 )); DATA(insert ( 2777 0 1 f 2750 )); DATA(insert ( 2777 0 2 f 2751 )); DATA(insert ( 2777 0 3 t 2752 )); +DATA(insert ( 2777 0 4 t 1070 )); /* * gin _money_ops @@ -831,6 +858,7 @@ DATA(insert ( 2777 0 3 t 2752 )); DATA(insert ( 2778 0 1 f 2750 )); DATA(insert ( 2778 0 2 f 2751 )); DATA(insert ( 2778 0 3 t 2752 )); +DATA(insert ( 2778 0 4 t 1070 )); /* * gin _reltime_ops @@ -838,6 +866,7 @@ DATA(insert ( 2778 0 3 t 2752 )); DATA(insert ( 2779 0 1 f 2750 )); DATA(insert ( 2779 0 2 f 2751 )); DATA(insert ( 2779 0 3 t 2752 )); +DATA(insert ( 2779 0 4 t 1070 )); /* * gin _tinterval_ops @@ -845,5 +874,6 @@ DATA(insert ( 2779 0 3 t 2752 )); DATA(insert ( 2780 0 1 f 2750 )); DATA(insert ( 2780 0 2 f 2751 )); DATA(insert ( 2780 0 3 t 2752 )); +DATA(insert ( 2780 0 4 t 1070 )); #endif /* PG_AMOP_H */ diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index a07dc64a65e627228bf23c376780b75d449c85af..715462e3d5707f16ac14a3a32ddcf84b5d5e2e16 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -244,6 +244,12 @@ SELECT * FROM array_index_op_test WHERE i ~ '{38,34,32,89}' ORDER BY seqno; 98 | {38,34,32,89} | {AAAAAAAAAAAAAAAAAA71621,AAAA8857,AAAAAAAAAAAAAAAAAAA65037,AAAAAAAAAAAAAAAA31334,AAAAAAAAAA48845} (3 rows) +SELECT * FROM array_index_op_test WHERE i = '{47,77}' ORDER BY seqno; + seqno | i | t +-------+---------+----------------------------------------------------------------------------------------------------------------- + 95 | {47,77} | {AAAAAAAAAAAAAAAAA764,AAAAAAAAAAA74076,AAAAAAAAAA18107,AAAAA40681,AAAAAAAAAAAAAAA35875,AAAAA60038,AAAAAAA56483} +(1 row) + CREATE INDEX textarrayidx ON array_index_op_test USING gin (t); SELECT * FROM array_index_op_test WHERE t @ '{AAAAAAAA72908}' ORDER BY seqno; seqno | i | t @@ -303,6 +309,12 @@ SELECT * FROM array_index_op_test WHERE t ~ '{AAAAAAAA72908,AAAAAAAAAAAAAAAAAAA1 45 | {99,45} | {AAAAAAAA72908,AAAAAAAAAAAAAAAAAAA17075,AA88409,AAAAAAAAAAAAAAAAAA36842,AAAAAAA48038,AAAAAAAAAAAAAA10611} (2 rows) +SELECT * FROM array_index_op_test WHERE t = '{AAAAAAAAAA646,A87088}' ORDER BY seqno; + seqno | i | t +-------+------------+------------------------ + 96 | {23,97,43} | {AAAAAAAAAA646,A87088} +(1 row) + RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out index 329905fb4d751c8455c8043f537401660292de4b..1161d0474c46d4372de53ff0bea4bf7b8fb5fb60 100644 --- a/src/test/regress/expected/opr_sanity.out +++ b/src/test/regress/expected/opr_sanity.out @@ -833,7 +833,8 @@ ORDER BY 1, 2, 3; 2742 | 1 | && 2742 | 2 | @ 2742 | 3 | ~ -(27 rows) + 2742 | 4 | = +(28 rows) -- Check that all operators linked to by opclass entries have selectivity -- estimators. This is not absolutely required, but it seems a reasonable diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index ef7f1cca27e2195c8212e3448f22c7ccf3e064f4..37df3ee2cac3b117c7d8c866f9c64fe59a21db4c 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -150,6 +150,7 @@ SELECT * FROM array_index_op_test WHERE i && '{17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @ '{32,17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{32,17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i ~ '{38,34,32,89}' ORDER BY seqno; +SELECT * FROM array_index_op_test WHERE i = '{47,77}' ORDER BY seqno; CREATE INDEX textarrayidx ON array_index_op_test USING gin (t); @@ -160,6 +161,7 @@ SELECT * FROM array_index_op_test WHERE t && '{AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @ '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t ~ '{AAAAAAAA72908,AAAAAAAAAAAAAAAAAAA17075,AA88409,AAAAAAAAAAAAAAAAAA36842,AAAAAAA48038,AAAAAAAAAAAAAA10611}' ORDER BY seqno; +SELECT * FROM array_index_op_test WHERE t = '{AAAAAAAAAA646,A87088}' ORDER BY seqno; RESET enable_seqscan;