DROP SCHEMA segment_subpartition_tablespace CASCADE;
ERROR: schema "segment_subpartition_tablespace" does not exist
CREATE SCHEMA segment_subpartition_tablespace;
SET CURRENT_SCHEMA TO segment_subpartition_tablespace;
--prepare
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts1'
\! mkdir '@testtablespace@/segment_subpartition_tablespace_ts1'
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts2'
\! mkdir '@testtablespace@/segment_subpartition_tablespace_ts2'
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts3'
\! mkdir '@testtablespace@/segment_subpartition_tablespace_ts3'
CREATE TABLESPACE segment_subpartition_tablespace_ts1 LOCATION '@testtablespace@/segment_subpartition_tablespace_ts1';
CREATE TABLESPACE segment_subpartition_tablespace_ts2 LOCATION '@testtablespace@/segment_subpartition_tablespace_ts2';
CREATE TABLESPACE segment_subpartition_tablespace_ts3 LOCATION '@testtablespace@/segment_subpartition_tablespace_ts3';
--
----test create subpartition with tablespace----
--
--range-range
CREATE TABLE t_range_range1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY RANGE (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES LESS THAN (15)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES LESS THAN (15)
),
PARTITION P_RANGE3 VALUES LESS THAN (15)
(
SUBPARTITION P_RANGE3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES LESS THAN (15)
),
PARTITION P_RANGE4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_RANGE5 VALUES LESS THAN (25)
);
SELECT pg_get_tabledef('t_range_range1');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_range1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY RANGE (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) +
( +
SUBPARTITION p_range3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES LESS THAN (15) +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_range5 VALUES LESS THAN (25) +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES LESS THAN (MAXVALUE) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_range1;
CREATE TABLE t_range_range2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY RANGE (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE1_4 VALUES LESS THAN (20)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE2_4 VALUES LESS THAN (20)
),
PARTITION P_RANGE3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_RANGE3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE3_4 VALUES LESS THAN (20)
),
PARTITION P_RANGE4 VALUES LESS THAN (20)
(
SUBPARTITION P_RANGE4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE4_4 VALUES LESS THAN (20)
),
PARTITION P_RANGE5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_RANGE6 VALUES LESS THAN (30)
);
SELECT pg_get_tabledef('t_range_range2');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_range2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY RANGE (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range2_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range3_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range4_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_range6 VALUES LESS THAN (30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range6_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_range2;
--range-list
CREATE TABLE t_range_list1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES (11,12,13,14,15)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES (11,12,13,14,15)
),
PARTITION P_RANGE3 VALUES LESS THAN (15)
(
SUBPARTITION P_RANGE3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES (11,12,13,14,15)
),
PARTITION P_RANGE4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_RANGE5 VALUES LESS THAN (25)
);
SELECT pg_get_tabledef('t_range_list1');
pg_get_tabledef
---------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_list1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) +
( +
SUBPARTITION p_range3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES (11,12,13,14,15) +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_range5 VALUES LESS THAN (25) +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES (DEFAULT) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_list1;
CREATE TABLE t_range_list2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE1_4 VALUES (16,17,18,19,20)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE2_4 VALUES (16,17,18,19,20)
),
PARTITION P_RANGE3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_RANGE3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE3_4 VALUES (16,17,18,19,20)
),
PARTITION P_RANGE4 VALUES LESS THAN (20)
(
SUBPARTITION P_RANGE4_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE4_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE4_4 VALUES (16,17,18,19,20)
),
PARTITION P_RANGE5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_RANGE6 VALUES LESS THAN (30)
);
SELECT pg_get_tabledef('t_range_list2');
pg_get_tabledef
---------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_list2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range3_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range4_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range4_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_range6 VALUES LESS THAN (30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range6_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_list2;
--range-hash
CREATE TABLE t_range_hash1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY RANGE (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3
),
PARTITION P_RANGE3 VALUES LESS THAN (15)
(
SUBPARTITION P_RANGE3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3
),
PARTITION P_RANGE4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_RANGE5 VALUES LESS THAN (25)
);
SELECT pg_get_tabledef('t_range_hash1');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_hash1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY RANGE (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) +
( +
SUBPARTITION p_range3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_range5 VALUES LESS THAN (25) +
( +
SUBPARTITION p_range5_subpartdefault1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_hash1;
CREATE TABLE t_range_hash2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY RANGE (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE1_4
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE2_4
),
PARTITION P_RANGE3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_RANGE3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE3_4
),
PARTITION P_RANGE4 VALUES LESS THAN (20)
(
SUBPARTITION P_RANGE4_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE4_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE4_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE4_4
),
PARTITION P_RANGE5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_RANGE6 VALUES LESS THAN (30)
);
SELECT pg_get_tabledef('t_range_hash2');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_hash2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY RANGE (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range1_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range2_4 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range3_4 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range4_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range4_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range4_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range5_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_range6 VALUES LESS THAN (30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range6_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_hash2;
--list-range
CREATE TABLE t_list_range1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES LESS THAN (15)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES LESS THAN (15)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15)
(
SUBPARTITION P_LIST3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES LESS THAN (15)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_LIST5 VALUES (21,22,23,24,25)
);
SELECT pg_get_tabledef('t_list_range1');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_range1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) +
( +
SUBPARTITION p_list3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES LESS THAN (15) +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_list5 VALUES (21,22,23,24,25) +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES LESS THAN (MAXVALUE) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_range1;
CREATE TABLE t_list_range2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST1_4 VALUES LESS THAN (20)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST2_4 VALUES LESS THAN (20)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_LIST3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST3_4 VALUES LESS THAN (20)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20)
(
SUBPARTITION P_LIST4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST4_4 VALUES LESS THAN (20)
),
PARTITION P_LIST5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_LIST6 VALUES (26,27,28,29,30)
);
SELECT pg_get_tabledef('t_list_range2');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_range2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list2_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list4_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_list6 VALUES (26,27,28,29,30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list6_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_range2;
--list-list
CREATE TABLE t_list_list1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY LIST (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES (11,12,13,14,15)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES (11,12,13,14,15)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15)
(
SUBPARTITION P_LIST3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES (11,12,13,14,15)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_LIST5 VALUES (21,22,23,24,25)
);
SELECT pg_get_tabledef('t_list_list1');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_list1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY LIST (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) +
( +
SUBPARTITION p_list3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES (11,12,13,14,15) +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_list5 VALUES (21,22,23,24,25) +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES (DEFAULT) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_list1;
CREATE TABLE t_list_list2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY LIST (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST1_4 VALUES (16,17,18,19,20)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST2_4 VALUES (16,17,18,19,20)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_LIST3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST3_4 VALUES (16,17,18,19,20)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20)
(
SUBPARTITION P_LIST4_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST4_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST4_4 VALUES (16,17,18,19,20)
),
PARTITION P_LIST5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_LIST6 VALUES (26,27,28,29,30)
);
SELECT pg_get_tabledef('t_list_list2');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_list2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY LIST (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list4_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_list6 VALUES (26,27,28,29,30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list6_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_list2;
--list-hash
CREATE TABLE t_list_hash1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3
),
PARTITION P_LIST3 VALUES (11,12,13,14,15)
(
SUBPARTITION P_LIST3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3
),
PARTITION P_LIST4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_LIST5 VALUES (21,22,23,24,25)
);
SELECT pg_get_tabledef('t_list_hash1');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_hash1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) +
( +
SUBPARTITION p_list3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list4_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) +
( +
SUBPARTITION p_list5_subpartdefault1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_hash1;
CREATE TABLE t_list_hash2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST1_4
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST2_4
),
PARTITION P_LIST3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_LIST3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST3_4
),
PARTITION P_LIST4 VALUES (16,17,18,19,20)
(
SUBPARTITION P_LIST4_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST4_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST4_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST4_4
),
PARTITION P_LIST5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_LIST6 VALUES (26,27,28,29,30)
);
SELECT pg_get_tabledef('t_list_hash2');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_hash2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list1_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list2_4 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3+
( +
SUBPARTITION p_list3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_4 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list4_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list4_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list4_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3+
( +
SUBPARTITION p_list5_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list6 VALUES (26,27,28,29,30) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list6_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_hash2;
--hash-range
CREATE TABLE t_hash_range1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY HASH (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES LESS THAN (15)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES LESS THAN (15)
),
PARTITION P_HASH3
(
SUBPARTITION P_HASH3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES LESS THAN (15)
),
PARTITION P_HASH4 TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_HASH5
);
SELECT pg_get_tabledef('t_hash_range1');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_range1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY HASH (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 +
( +
SUBPARTITION p_hash3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES LESS THAN (15) +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_hash5 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES LESS THAN (MAXVALUE) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_range1;
CREATE TABLE t_hash_range2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY HASH (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH1_4 VALUES LESS THAN (20)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH2_4 VALUES LESS THAN (20)
),
PARTITION P_HASH3 TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_HASH3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH3_4 VALUES LESS THAN (20)
),
PARTITION P_HASH4
(
SUBPARTITION P_HASH4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH4_4 VALUES LESS THAN (20)
),
PARTITION P_HASH5 TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_HASH6
);
SELECT pg_get_tabledef('t_hash_range2');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_range2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY HASH (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash2_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash3_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash4_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash5 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_hash6 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash6_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_range2;
--hash-list
CREATE TABLE t_hash_list1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH3
(
SUBPARTITION P_HASH3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH4 TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_HASH5
);
SELECT pg_get_tabledef('t_hash_list1');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_list1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 +
( +
SUBPARTITION p_hash3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES (11,12,13,14,15) +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_hash5 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES (DEFAULT) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_list1;
CREATE TABLE t_hash_list2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH1_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH2_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH3 TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_HASH3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH3_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH4
(
SUBPARTITION P_HASH4_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH4_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH4_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH5 TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_HASH6
);
SELECT pg_get_tabledef('t_hash_list2');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_list2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash3_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash4_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash4_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash5 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_hash6 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash6_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_list2;
--hash-hash
CREATE TABLE t_hash_hash1(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY HASH (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3
),
PARTITION P_HASH3
(
SUBPARTITION P_HASH3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3
),
PARTITION P_HASH4 TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_HASH5
);
SELECT pg_get_tabledef('t_hash_hash1');
pg_get_tabledef
---------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_hash1 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY HASH (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 +
( +
SUBPARTITION p_hash3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_hash5 +
( +
SUBPARTITION p_hash5_subpartdefault1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_hash1;
CREATE TABLE t_hash_hash2(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY HASH (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH1_4
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH2_4
),
PARTITION P_HASH3 TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_HASH3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH3_4
),
PARTITION P_HASH4
(
SUBPARTITION P_HASH4_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH4_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH4_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH4_4
),
PARTITION P_HASH5 TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_HASH6
);
SELECT pg_get_tabledef('t_hash_hash2');
pg_get_tabledef
---------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_hash2 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY HASH (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash1_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash2_4 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash3_4 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash4_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash4_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash4_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash5 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash5_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_hash6 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash6_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_hash2;
--
----test add partition with tablespace----
--
--since the add subpartition define use the same code, we only test different partition type: range/list
--range-list
CREATE TABLE t_range_list3(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES (11,12,13,14,15)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES (11,12,13,14,15)
)
);
ALTER TABLE t_range_list3 ADD PARTITION P_RANGE3 VALUES LESS THAN (15)
(
SUBPARTITION P_RANGE3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES (11,12,13,14,15)
);
ALTER TABLE t_range_list3 ADD PARTITION P_RANGE4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1;
ALTER TABLE t_range_list3 ADD PARTITION P_RANGE5 VALUES LESS THAN (25);
SELECT pg_get_tabledef('t_range_list3');
pg_get_tabledef
---------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_list3 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) +
( +
SUBPARTITION p_range3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES (11,12,13,14,15) +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_range5 VALUES LESS THAN (25) +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES (DEFAULT) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_list3;
CREATE TABLE t_range_list4(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_RANGE1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_RANGE1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE1_4 VALUES (16,17,18,19,20)
),
PARTITION P_RANGE2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_RANGE2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE2_4 VALUES (16,17,18,19,20)
)
);
ALTER TABLE t_range_list4 ADD PARTITION P_RANGE3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_RANGE3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE3_4 VALUES (16,17,18,19,20)
);
ALTER TABLE t_range_list4 ADD PARTITION P_RANGE4 VALUES LESS THAN (20)
(
SUBPARTITION P_RANGE4_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_RANGE4_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_RANGE4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_RANGE4_4 VALUES (16,17,18,19,20)
);
ALTER TABLE t_range_list4 ADD PARTITION P_RANGE5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_range_list4 ADD PARTITION P_RANGE6 VALUES LESS THAN (30);
SELECT pg_get_tabledef('t_range_list4');
pg_get_tabledef
---------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_range_list4 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_range1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_range2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_range3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range3_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_range4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range4_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_range4_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_range4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_range4_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_range5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_range5_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_range6 VALUES LESS THAN (30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_range6_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_range_list4;
--list-hash
CREATE TABLE t_list_hash3(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3
)
);
ALTER TABLE t_list_hash3 ADD PARTITION P_LIST3 VALUES (11,12,13,14,15)
(
SUBPARTITION P_LIST3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3
);
ALTER TABLE t_list_hash3 ADD PARTITION P_LIST4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1;
ALTER TABLE t_list_hash3 ADD PARTITION P_LIST5 VALUES (21,22,23,24,25);
SELECT pg_get_tabledef('t_list_hash3');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_hash3 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) +
( +
SUBPARTITION p_list3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list4_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) +
( +
SUBPARTITION p_list5_subpartdefault1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_hash3;
CREATE TABLE t_list_hash4(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST1_4
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST2_4
)
);
ALTER TABLE t_list_hash4 ADD PARTITION P_LIST3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_LIST3_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST3_4
);
ALTER TABLE t_list_hash4 ADD PARTITION P_LIST4 VALUES (16,17,18,19,20)
(
SUBPARTITION P_LIST4_1 TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST4_2 TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST4_3 TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST4_4
);
ALTER TABLE t_list_hash4 ADD PARTITION P_LIST5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_list_hash4 ADD PARTITION P_LIST6 VALUES (26,27,28,29,30);
SELECT pg_get_tabledef('t_list_hash4');
pg_get_tabledef
----------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_hash4 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY LIST (c1) SUBPARTITION BY HASH (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list1_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list2_4 TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3+
( +
SUBPARTITION p_list3_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_4 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list4_1 TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_2 TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list4_3 TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list4_4 TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3+
( +
SUBPARTITION p_list5_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list6 VALUES (26,27,28,29,30) TABLESPACE segment_subpartition_tablespace_ts1+
( +
SUBPARTITION p_list6_subpartdefault1 TABLESPACE segment_subpartition_tablespace_ts1 +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_hash4;
--
----test add subpartition with tablespace----
--
--list-range
CREATE TABLE t_list_range3(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES LESS THAN (15)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES LESS THAN (15)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15)
(
SUBPARTITION P_LIST3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES LESS THAN (15)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_LIST5 VALUES (21,22,23,24,25)
);
ALTER TABLE t_list_range3 MODIFY PARTITION P_LIST1 ADD SUBPARTITION P_LIST1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_list_range3 MODIFY PARTITION P_LIST2 ADD SUBPARTITION P_LIST2_4 VALUES LESS THAN (20);
ALTER TABLE t_list_range3 MODIFY PARTITION P_LIST3 ADD SUBPARTITION P_LIST3_4 VALUES LESS THAN (20);
SELECT pg_get_tabledef('t_list_range3');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_range3 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) +
( +
SUBPARTITION p_list3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES LESS THAN (15), +
SUBPARTITION p_list3_4 VALUES LESS THAN (20) +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_list5 VALUES (21,22,23,24,25) +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES LESS THAN (MAXVALUE) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_range3;
CREATE TABLE t_list_range4(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2)
(
PARTITION P_LIST1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_LIST1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST1_4 VALUES LESS THAN (20)
),
PARTITION P_LIST2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_LIST2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST2_4 VALUES LESS THAN (20)
),
PARTITION P_LIST3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_LIST3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST3_4 VALUES LESS THAN (20)
),
PARTITION P_LIST4 VALUES (16,17,18,19,20)
(
SUBPARTITION P_LIST4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_LIST4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_LIST4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_LIST4_4 VALUES LESS THAN (20)
),
PARTITION P_LIST5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_LIST6 VALUES (26,27,28,29,30)
);
ALTER TABLE t_list_range4 MODIFY PARTITION P_LIST1 ADD SUBPARTITION P_LIST1_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_list_range4 MODIFY PARTITION P_LIST2 ADD SUBPARTITION P_LIST2_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts2;
ALTER TABLE t_list_range4 MODIFY PARTITION P_LIST3 ADD SUBPARTITION P_LIST3_5 VALUES LESS THAN (25);
ALTER TABLE t_list_range4 MODIFY PARTITION P_LIST4 ADD SUBPARTITION P_LIST4_5 VALUES LESS THAN (25);
SELECT pg_get_tabledef('t_list_range4');
pg_get_tabledef
-------------------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_list_range4 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY LIST (c1) SUBPARTITION BY RANGE (c2) +
( +
PARTITION p_list1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list1_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list1_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list1_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list1_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_list2_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list2_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list2_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list2_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_list3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list3_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list3_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list3_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list3_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_list4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list4_1 VALUES LESS THAN (5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_2 VALUES LESS THAN (10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_list4_3 VALUES LESS THAN (15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_list4_4 VALUES LESS THAN (20) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_list4_5 VALUES LESS THAN (25) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_list5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_list5_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_list6 VALUES (26,27,28,29,30) TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_list6_subpartdefault1 VALUES LESS THAN (MAXVALUE) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_list_range4;
--hash-list
CREATE TABLE t_hash_list3(c1 int, c2 int, c3 int) WITH (SEGMENT=ON)
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH3
(
SUBPARTITION P_HASH3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES (11,12,13,14,15)
),
PARTITION P_HASH4 TABLESPACE segment_subpartition_tablespace_ts1,
PARTITION P_HASH5
);
ALTER TABLE t_hash_list3 MODIFY PARTITION P_HASH1 ADD SUBPARTITION P_HASH1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_hash_list3 MODIFY PARTITION P_HASH2 ADD SUBPARTITION P_HASH2_4 VALUES (16,17,18,19,20);
ALTER TABLE t_hash_list3 MODIFY PARTITION P_HASH3 ADD SUBPARTITION P_HASH3_4 VALUES (16,17,18,19,20);
SELECT pg_get_tabledef('t_hash_list3');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_list3 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 +
( +
SUBPARTITION p_hash3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES (11,12,13,14,15), +
SUBPARTITION p_hash3_4 VALUES (16,17,18,19,20) +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
), +
PARTITION p_hash5 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES (DEFAULT) +
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_list3;
CREATE TABLE t_hash_list4(c1 int, c2 int, c3 int) WITH (SEGMENT=ON) TABLESPACE segment_subpartition_tablespace_ts1
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2)
(
PARTITION P_HASH1 TABLESPACE segment_subpartition_tablespace_ts1
(
SUBPARTITION P_HASH1_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH1_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH1_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH2 TABLESPACE segment_subpartition_tablespace_ts2
(
SUBPARTITION P_HASH2_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH2_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH2_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH3 TABLESPACE segment_subpartition_tablespace_ts3
(
SUBPARTITION P_HASH3_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH3_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH3_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH4
(
SUBPARTITION P_HASH4_1 VALUES ( 1, 2, 3, 4, 5) TABLESPACE segment_subpartition_tablespace_ts1,
SUBPARTITION P_HASH4_2 VALUES ( 6, 7, 8, 9,10) TABLESPACE segment_subpartition_tablespace_ts2,
SUBPARTITION P_HASH4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3,
SUBPARTITION P_HASH4_4 VALUES (16,17,18,19,20)
),
PARTITION P_HASH5 TABLESPACE segment_subpartition_tablespace_ts3,
PARTITION P_HASH6
);
ALTER TABLE t_hash_list4 MODIFY PARTITION P_HASH1 ADD SUBPARTITION P_HASH1_5 VALUES(21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3;
ALTER TABLE t_hash_list4 MODIFY PARTITION P_HASH2 ADD SUBPARTITION P_HASH2_5 VALUES(21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts2;
ALTER TABLE t_hash_list4 MODIFY PARTITION P_HASH3 ADD SUBPARTITION P_HASH3_5 VALUES(21,22,23,24,25);
ALTER TABLE t_hash_list4 MODIFY PARTITION P_HASH4 ADD SUBPARTITION P_HASH4_5 VALUES(21,22,23,24,25);
SELECT pg_get_tabledef('t_hash_list4');
pg_get_tabledef
--------------------------------------------------------------------------------------------------------------
SET search_path = segment_subpartition_tablespace; +
CREATE TABLE t_hash_list4 ( +
c1 integer, +
c2 integer, +
c3 integer +
) +
WITH (orientation=row, segment=on, compression=no) +
TABLESPACE segment_subpartition_tablespace_ts1 +
PARTITION BY HASH (c1) SUBPARTITION BY LIST (c2) +
( +
PARTITION p_hash1 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash1_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash1_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash1_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash1_5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash2 TABLESPACE segment_subpartition_tablespace_ts2 +
( +
SUBPARTITION p_hash2_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash2_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash2_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash2_5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts2 +
), +
PARTITION p_hash3 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash3_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash3_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash3_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash3_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash3_5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts3 +
), +
PARTITION p_hash4 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash4_1 VALUES (1,2,3,4,5) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash4_2 VALUES (6,7,8,9,10) TABLESPACE segment_subpartition_tablespace_ts2, +
SUBPARTITION p_hash4_3 VALUES (11,12,13,14,15) TABLESPACE segment_subpartition_tablespace_ts3, +
SUBPARTITION p_hash4_4 VALUES (16,17,18,19,20) TABLESPACE segment_subpartition_tablespace_ts1, +
SUBPARTITION p_hash4_5 VALUES (21,22,23,24,25) TABLESPACE segment_subpartition_tablespace_ts1 +
), +
PARTITION p_hash5 TABLESPACE segment_subpartition_tablespace_ts3 +
( +
SUBPARTITION p_hash5_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts3+
), +
PARTITION p_hash6 TABLESPACE segment_subpartition_tablespace_ts1 +
( +
SUBPARTITION p_hash6_subpartdefault1 VALUES (DEFAULT) TABLESPACE segment_subpartition_tablespace_ts1+
) +
) +
ENABLE ROW MOVEMENT;
(1 row)
DROP TABLE t_hash_list4;
--finish
drop tablespace segment_subpartition_tablespace_ts1;
drop tablespace segment_subpartition_tablespace_ts2;
drop tablespace segment_subpartition_tablespace_ts3;
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts1'
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts2'
\! rm -fr '@testtablespace@/segment_subpartition_tablespace_ts3'
DROP SCHEMA segment_subpartition_tablespace CASCADE;
RESET CURRENT_SCHEMA;