vacuum_while_reindex_heap_btree.out 1.7 KB
Newer Older
1 2 3
DROP TABLE IF EXISTS reindex_heap;
DROP

4 5 6 7
CREATE TABLE reindex_heap (a INT);
CREATE
insert into reindex_heap select generate_series(1,1000);
INSERT 1000
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
insert into reindex_heap select generate_series(1,1000);
INSERT 1000
create index idx_btree_reindex_heap on reindex_heap(a);
CREATE
-- @Description Ensures that a vacuum during reindex operations is ok
--

DELETE FROM reindex_heap WHERE a < 128;
DELETE 254
1: BEGIN;
BEGIN
-- Remember index relfilenodes from master and segments before
-- reindex.
1: create temp table old_relfilenodes as (select gp_segment_id as dbid, relfilenode, oid, relname from gp_dist_random('pg_class') where relname = 'idx_btree_reindex_heap' union all select gp_segment_id as dbid, relfilenode, oid, relname from pg_class where relname = 'idx_btree_reindex_heap');
CREATE 4
1: REINDEX index idx_btree_reindex_heap;
REINDEX
2&: VACUUM reindex_heap;  <waiting ...>
1: COMMIT;
COMMIT
2<:  <... completed>
VACUUM
-- Validate that reindex changed all index relfilenodes on master as well as
-- segments.  The following query should return 0 tuples.
1: select oldrels.* from old_relfilenodes oldrels join (select gp_segment_id as dbid, relfilenode, relname from gp_dist_random('pg_class') where relname = 'idx_btree_reindex_heap' union all select gp_segment_id as dbid, relfilenode, relname from pg_class where relname = 'idx_btree_reindex_heap') newrels on oldrels.relfilenode = newrels.relfilenode and oldrels.dbid = newrels.dbid and oldrels.relname = newrels.relname;
33 34
 dbid | relfilenode | oid | relname 
------+-------------+-----+---------
35 36 37 38
(0 rows)
2: COMMIT;
COMMIT
3: SELECT COUNT(*) FROM reindex_heap WHERE a = 1500;
39 40 41
 count 
-------
 0     
42 43 44
(1 row)
3: INSERT INTO reindex_heap VALUES (0);
INSERT 1