blob: acb88b68db90f363340bf1b60aceeccd02093ecd [file] [log] [blame]
DROP TABLE IF EXISTS reindex_ao;
CREATE TABLE reindex_ao (a INT) WITH (appendonly=true);
insert into reindex_ao select generate_series(1,1000);
insert into reindex_ao select generate_series(1,1000);
create index idx_bitmap_reindex_ao on reindex_ao USING bitmap(a);
-- @Description Ensures that a vacuum during reindex operations is ok
--
DELETE FROM reindex_ao WHERE a < 128;
1: 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_bitmap_reindex_ao'
union all
select gp_segment_id as dbid, relfilenode, oid, relname from pg_class
where relname = 'idx_bitmap_reindex_ao');
1: REINDEX index idx_bitmap_reindex_ao;
2&: VACUUM reindex_ao;
1: COMMIT;
2<:
-- 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_bitmap_reindex_ao'
union all
select gp_segment_id as dbid, relfilenode, relname from pg_class
where relname = 'idx_bitmap_reindex_ao') newrels
on oldrels.relfilenode = newrels.relfilenode
and oldrels.dbid = newrels.dbid
and oldrels.relname = newrels.relname;
2: COMMIT;
3: SELECT COUNT(*) FROM reindex_ao WHERE a = 1500;
3: INSERT INTO reindex_ao VALUES (0);