15670430创建于 2020年12月28日历史提交
--
-- ALTER_TABLE
-- Add column for empty table, type test
--
set time zone 'PRC';
-- Test on correctness of bitmap
drop table if exists mergepartitionbitmap1;
NOTICE:  table "mergepartitionbitmap1" does not exist, skipping
CREATE TABLE mergepartitionbitmap1
(
 L_ORDERKEY BIGINT NOT NULL
, L_PARTKEY BIGINT NOT NULL
, L_SUPPKEY BIGINT NOT NULL
, L_LINENUMBER BIGINT NOT NULL
, L_QUANTITY DECIMAL(15,2) NOT NULL
, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL
, L_DISCOUNT DECIMAL(15,2) NOT NULL
, L_TAX DECIMAL(15,2) NOT NULL
, L_RETURNFLAG CHAR(1) NOT NULL
, L_LINESTATUS CHAR(1) NOT NULL
, L_SHIPDATE DATE NOT NULL
, L_COMMITDATE DATE NOT NULL
, L_RECEIPTDATE DATE NOT NULL
, L_SHIPINSTRUCT CHAR(25) NOT NULL
, L_SHIPMODE CHAR(10) NOT NULL
, L_COMMENT VARCHAR(44) NOT NULL
--, primary key (L_ORDERKEY, L_LINENUMBER)
)
partition by range(L_ORDERKEY)
(partition p1 values less than(3000),
partition p2 values less than(6000),
partition p3 values less than(15000))
;
create index mergepartitionbitmap1_ind on mergepartitionbitmap1 (L_ORDERKEY) local;
copy mergepartitionbitmap1 from '@abs_srcdir@/data/lineitem.data' delimiter '|';
copy mergepartitionbitmap1 from '@abs_srcdir@/data/lineitem.data' delimiter '|';
select relname from pg_partition where parentid = (select oid from pg_class where relname = 'mergepartitionbitmap1_ind') order by 1;
      relname      
-------------------
 p1_l_orderkey_idx
 p2_l_orderkey_idx
 p3_l_orderkey_idx
(3 rows)

select relname, boundaries from pg_partition where parentid in (select oid from pg_class where relname = 'mergepartitionbitmap1') order by 2;
        relname        | boundaries 
-----------------------+------------
 p3                    | {15000}
 p1                    | {3000}
 p2                    | {6000}
 mergepartitionbitmap1 | 
(4 rows)

select count(*) from mergepartitionbitmap1;
 count 
-------
 20000
(1 row)

delete from mergepartitionbitmap1 where L_LINENUMBER=2;
select count(*) from mergepartitionbitmap1;
 count 
-------
 15660
(1 row)

alter table mergepartitionbitmap1 merge partitions p1, p2 into partition px;
select relname, boundaries from pg_partition where parentid in (select oid from pg_class where relname = 'mergepartitionbitmap1') order by 2;
        relname        | boundaries 
-----------------------+------------
 p3                    | {15000}
 px                    | {6000}
 mergepartitionbitmap1 | 
(3 rows)

select relname from pg_partition where parentid = (select oid from pg_class where relname = 'mergepartitionbitmap1_ind') order by 1;
      relname      
-------------------
 p2_l_orderkey_idx
 p3_l_orderkey_idx
(2 rows)

select count(*) from mergepartitionbitmap1;
 count 
-------
 15660
(1 row)

delete from mergepartitionbitmap1 where L_LINENUMBER=3;
delete from mergepartitionbitmap1 where L_LINENUMBER=4;
select count(*) from mergepartitionbitmap1;
 count 
-------
  9238
(1 row)

alter table mergepartitionbitmap1 merge partitions px, p3 into partition p3;
select relname, boundaries from pg_partition where parentid in (select oid from pg_class where relname = 'mergepartitionbitmap1') order by 2;
        relname        | boundaries 
-----------------------+------------
 p3                    | {15000}
 mergepartitionbitmap1 | 
(2 rows)

select relname from pg_partition where parentid = (select oid from pg_class where relname = 'mergepartitionbitmap1_ind') order by 1;
      relname      
-------------------
 p3_l_orderkey_idx
(1 row)

select count(*) from mergepartitionbitmap1;
 count 
-------
  9238
(1 row)

drop table mergepartitionbitmap1;