1- SET synchronous_commit = 0;
21CREATE TABLE brintest (byteacol bytea,
32 charcol "char",
43 namecol name,
@@ -24,7 +23,7 @@ CREATE TABLE brintest (byteacol bytea,
2423 numericcol numeric,
2524 uuidcol uuid,
2625 lsncol pg_lsn
27- ) WITH (fillfactor=50 );
26+ ) WITH (fillfactor=10 );
2827INSERT INTO brintest SELECT
2928 repeat(stringu1, 42)::bytea,
3029 substr(stringu1, 1, 1)::"char",
@@ -50,7 +49,9 @@ INSERT INTO brintest SELECT
5049 tenthous::numeric(36,30) * fivethous * even / (hundred + 1),
5150 format('%s%s-%s-%s-%s-%s%s%s', to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'))::uuid,
5251 format('%s/%s%s', odd, even, tenthous)::pg_lsn
53- FROM tenk1;
52+ FROM tenk1 LIMIT 5;
53+ -- throw in some NULL-only tuples too
54+ INSERT INTO brintest SELECT NULL FROM tenk1 LIMIT 25;
5455CREATE INDEX brinidx ON brintest USING brin (
5556 byteacol,
5657 charcol,
@@ -78,6 +79,7 @@ CREATE INDEX brinidx ON brintest USING brin (
7879 uuidcol,
7980 lsncol
8081) with (pages_per_range = 1);
82+ BEGIN;
8183CREATE TABLE brinopers (colname name, op text[], value text[],
8284 check (cardinality(op) = cardinality(value)));
8385INSERT INTO brinopers VALUES ('byteacol', '{>, >=, =, <=, <}', '{ZZAAAA, ZZAAAA, AAAAAA, AAAAAA, AAAAAA}');
@@ -104,7 +106,8 @@ INSERT INTO brinopers VALUES ('macaddrcol', '{>, >=, =, <=, <}', '{ff:fe:00:00:0
104106INSERT INTO brinopers VALUES ('bitcol', '{>, >=, =, <=, <}', '{1111111000, 1111111000, 0000000010, 0000000010, 0000000010}');
105107INSERT INTO brinopers VALUES ('varbitcol', '{>, >=, =, <=, <}', '{1111111111111000, 1111111111111000, 0000000000000100, 0000000000000100, 0000000000000100}');
106108INSERT INTO brinopers VALUES ('uuidcol', '{>, >=, =, <=, <}', '{99989998-9998-9998-9998-999899989998, 99989998-9998-9998-9998-999899989998, 00040004-0004-0004-0004-000400040004, 00040004-0004-0004-0004-000400040004, 00040004-0004-0004-0004-000400040005}');
107- INSERT INTO brinopers VALUES ('lsncol', '{>, >=, =, <=, <}', '{198/1999799, 198/1999799, 30/312815, 0/1200, 0/1200}');
109+ INSERT INTO brinopers VALUES ('lsncol', '{>, >=, =, <=, <, IS, IS NOT}', '{198/1999799, 198/1999799, 30/312815, 0/1200, 0/1200, NULL, NULL}');
110+ COMMIT;
108111DO $x$
109112DECLARE
110113 r record;
@@ -122,15 +125,15 @@ BEGIN
122125 -- run the query using the brin index
123126 SET enable_seqscan = 0;
124127 SET enable_bitmapscan = 1;
125- EXECUTE format('create temp table %s (tid tid) /* ON COMMIT DROP*/ ', tabname);
128+ EXECUTE format('create temp table %s (tid tid) ON COMMIT DROP', tabname);
126129 EXECUTE query;
127130
128131 -- run the query using a seqscan
129132 SET enable_seqscan = 1;
130133 SET enable_bitmapscan = 0;
131134 query = format($y$INSERT INTO %s SELECT ctid FROM brintest WHERE %s %s %L $y$,
132135 tabname_ss, r.colname, r.oper, r.value);
133- EXECUTE format('create temp table %s (tid tid) /* ON COMMIT DROP */ ', tabname_ss);
136+ EXECUTE format('create temp table %s (tid tid) ON COMMIT DROP', tabname_ss);
134137 EXECUTE query;
135138
136139 -- make sure both return the same results
@@ -168,12 +171,12 @@ INSERT INTO brintest SELECT
168171 tenthous::numeric(36,30) * fivethous * even / (hundred + 1),
169172 format('%s%s-%s-%s-%s-%s%s%s', to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'))::uuid,
170173 format('%s/%s%s', odd, even, tenthous)::pg_lsn
171- FROM tenk1;
174+ FROM tenk1 LIMIT 5 OFFSET 5 ;
172175SELECT brin_summarize_new_values('brinidx'::regclass);
173176 brin_summarize_new_values
174177---------------------------
175- 2000
178+ 5
176179(1 row)
177180
178181UPDATE brintest SET int8col = int8col * int4col;
179- SET synchronous_commit = 1 ;
182+ UPDATE brintest SET textcol = '' WHERE textcol IS NOT NULL ;
0 commit comments