Purpose
You can use this statement to create a table group.
A table group is used to create a group of tables with the same distribution characteristics. These tables can be joined locally to avoid cross-node data requests.
Syntax
CREATE TABLEGROUP tablegroup_name [tablegroup_option];
tablegroup_option:
SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'
Parameters
| Parameter | Description |
|---|---|
| tablegroup_name | The table group name. It can contain up to 64 characters in length and contain uppercase and lowercase letters, digits, and underscores (_). It must start with a letter or an underscore (_), and cannot contain keywords of OceanBase Database. If the name of the created table group already exists and IF NOT EXISTS is not specified, an error is returned. |
| SHARDING | The SHARDING attribute of the table group. If you do not specify the SHARDING attribute, an ADAPTIVE table group is created by default. Valid values:
|
Examples
Create a table group named
myTableGroup1and add non-partitioned tablesmyt1andmyt2to the table group.obclient> CREATE TABLEGROUP myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt1 (c1 NUMBER, c2 NUMBER) TABLEGROUP = myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt2 (c1 NUMBER, c2 NUMBER) TABLEGROUP = myTableGroup1; Query OK, 0 rows affectedCreate a table group named
tblgroup1with theSHARDINGattribute set toNONE, and add the non-partitioned tabletbl1, partitioned tabletbl2, and subpartitioned tabletbl3to the table group.obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col NUMBER) TABLEGROUP = tblgroup1; Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl3(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) SUBPARTITION BY LIST (col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); Query OK, 0 rows affectedCreate a table group named
tblgroup2with theSHARDINGattribute set toPARTITION, and add the partitioned tablestbl1andtbl2that use the same partitioning method to the table group.obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup2 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup2 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); Query OK, 0 rows affectedCreate a table group named
tblgroup3with theSHARDINGattribute set toPARTITION. The non-partitioned tabletbl1and the partitioned tabletbl2cannot be both added to the table group.obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT) TABLEGROUP = tblgroup3; Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup3 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, add table to tablegroup not allowedCreate a table group named
tblgroup4with theSHARDINGattribute set toPARTITION. The partitioned tablestbl1andtbl2have different partitioning key values and therefore cannot be both added to the table group.obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup4 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup4 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02'), PARTITION p2 VALUES ('03') ); OBE-00600: internal error code, arguments: -4179, partition num not equal, add table to tablegroup not allowedCreate a table group named
tblgroup5with theSHARDINGattribute set toADAPTIVE, and add the partitioned tablestbl1andtbl2that use the same partitioning method to the table group.obclient> CREATE TABLEGROUP tblgroup5 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup5 PARTITION BY LIST(col1) SUBPARTITION BY LIST (col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup5 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02'), SUBPARTITION mp2 VALUES('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); Query OK, 0 rows affectedCreate a table group named
tblgroup6with theSHARDINGattribute set toADAPTIVE. The non-partitioned tabletbl1and the partitioned tabletbl2cannot be both added to the table group.obclient> CREATE TABLEGROUP tblgroup6 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT) TABLEGROUP = tblgroup6; Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup6 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02'), SUBPARTITION mp2 VALUES('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, add table to tablegroup not allowedCreate a table group named
tblgroup7with theSHARDINGattribute set toADAPTIVE. The partitioned tablestbl1andtbl2have the same partitioning type but different subpartitioning types, namely, different numbers of subpartitions, and therefore cannot be both added to the table group.obclient> CREATE TABLEGROUP tblgroup7 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup7 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup7 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); OBE-00600: internal error code, arguments: -4179, subpartition num not matched, add table to tablegroup not allowed