From a36d528a5fcf399610479e0054932b4cc229cdc2 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 5 Aug 2024 17:18:43 +0800 Subject: [PATCH 1/6] add five restrictions on partitioned tables --- partitioned-table.md | 6 ++++++ sql-statements/sql-statement-create-table.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/partitioned-table.md b/partitioned-table.md index 8733e29bcdba3..f25e26d03be1b 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -1468,6 +1468,12 @@ Partition selection is supported for all types of table partitioning, including This section introduces some restrictions and limitations on partitioned tables in TiDB. +- Using the [`ALTER TABLE ... CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) statement to change column types of partitioned tables is not supported. +- [Temporary tables](/temporary-tables.md) in TiDB are **NOT** compatible with partitioned tables. +- Using the `ALTER TABLE t ADD PARTITION` statement to set partitioned tables to [cached tables](/cached-tables.md) is not supported. +- Creating a [foreign key](/foreign-key.md) on a partitioned table is not supported. +- The [ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. + ### Partitioning keys, primary keys and unique keys This section discusses the relationship of partitioning keys with primary keys and unique keys. The rule governing this relationship can be expressed as follows: **Every unique key on the table must use every column in the table's partitioning expression**. This also includes the table's primary key, because it is by definition a unique key. diff --git a/sql-statements/sql-statement-create-table.md b/sql-statements/sql-statement-create-table.md index f9250151c55d3..14af08fc4a7dc 100644 --- a/sql-statements/sql-statement-create-table.md +++ b/sql-statements/sql-statement-create-table.md @@ -258,7 +258,7 @@ mysql> DESC t1; * The `[ASC | DESC]` in `index_col_name` is currently parsed but ignored (MySQL 5.7 compatible behavior). * The `COMMENT` attribute does not support the `WITH PARSER` option. * TiDB supports 1017 columns in a single table by default and 4096 columns at most. The corresponding number limit in InnoDB is 1017 columns, and the hard limit in MySQL is 4096 columns. For details, see [TiDB Limitations](/tidb-limitations.md). -* For partitioned tables, only Range, Hash and Range Columns (single column) are supported. For details, see [partitioned table](/partitioned-table.md). +* TiDB supports `HASH`, `RANGE`, `LIST`, and `KEY` partitioning types. For an unsupported partition type, TiDB returns `Warning: Unsupported partition type %s, treat as normal table`, where `%s` is the specific unsupported partition type. ## See also From 799878d98b4662268cfb6a1a82803dc31c48dab1 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 5 Aug 2024 17:26:24 +0800 Subject: [PATCH 2/6] Update partitioned-table.md --- partitioned-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partitioned-table.md b/partitioned-table.md index f25e26d03be1b..d706b42c19aa1 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -1469,8 +1469,8 @@ Partition selection is supported for all types of table partitioning, including This section introduces some restrictions and limitations on partitioned tables in TiDB. - Using the [`ALTER TABLE ... CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) statement to change column types of partitioned tables is not supported. +- Using the `ALTER TABLE t CACHE` statement to set partitioned tables to [cached tables](/cached-tables.md) is not supported. - [Temporary tables](/temporary-tables.md) in TiDB are **NOT** compatible with partitioned tables. -- Using the `ALTER TABLE t ADD PARTITION` statement to set partitioned tables to [cached tables](/cached-tables.md) is not supported. - Creating a [foreign key](/foreign-key.md) on a partitioned table is not supported. - The [ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. From 5eeb653626d02e85e837b7e4ba9b7675beb4f4f4 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 5 Aug 2024 17:30:48 +0800 Subject: [PATCH 3/6] Update partitioned-table.md --- partitioned-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partitioned-table.md b/partitioned-table.md index d706b42c19aa1..af73b77599820 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -1469,7 +1469,7 @@ Partition selection is supported for all types of table partitioning, including This section introduces some restrictions and limitations on partitioned tables in TiDB. - Using the [`ALTER TABLE ... CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) statement to change column types of partitioned tables is not supported. -- Using the `ALTER TABLE t CACHE` statement to set partitioned tables to [cached tables](/cached-tables.md) is not supported. +- Using the [`ALTER TABLE t CACHE`](/cached-tables.md) statement to set partitioned tables to cached tables is not supported. - [Temporary tables](/temporary-tables.md) in TiDB are **NOT** compatible with partitioned tables. - Creating a [foreign key](/foreign-key.md) on a partitioned table is not supported. - The [ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. From 739aca5e9900024c53fafd7006de46bb5c9da8e6 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 5 Aug 2024 17:32:04 +0800 Subject: [PATCH 4/6] Update partitioned-table.md --- partitioned-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partitioned-table.md b/partitioned-table.md index af73b77599820..f43e1fb73459b 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -1469,7 +1469,7 @@ Partition selection is supported for all types of table partitioning, including This section introduces some restrictions and limitations on partitioned tables in TiDB. - Using the [`ALTER TABLE ... CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) statement to change column types of partitioned tables is not supported. -- Using the [`ALTER TABLE t CACHE`](/cached-tables.md) statement to set partitioned tables to cached tables is not supported. +- Using the [`ALTER TABLE ... CACHE`](/cached-tables.md) statement to set partitioned tables to cached tables is not supported. - [Temporary tables](/temporary-tables.md) in TiDB are **NOT** compatible with partitioned tables. - Creating a [foreign key](/foreign-key.md) on a partitioned table is not supported. - The [ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. From f4c19902b4ae7a14adc1d7cacefa83e60f419327 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 5 Aug 2024 17:37:24 +0800 Subject: [PATCH 5/6] Update partitioned-table.md --- partitioned-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partitioned-table.md b/partitioned-table.md index f43e1fb73459b..7bfe1e7849564 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -1472,7 +1472,7 @@ This section introduces some restrictions and limitations on partitioned tables - Using the [`ALTER TABLE ... CACHE`](/cached-tables.md) statement to set partitioned tables to cached tables is not supported. - [Temporary tables](/temporary-tables.md) in TiDB are **NOT** compatible with partitioned tables. - Creating a [foreign key](/foreign-key.md) on a partitioned table is not supported. -- The [ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. +- The [`ORDER_INDEX(t1_name, idx1_name [, idx2_name ...])`](/optimizer-hints.md#order_indext1_name-idx1_name--idx2_name-) hint does not work for partitioned tables and their related indexes, because indexes on partitioned tables cannot be read in order. ### Partitioning keys, primary keys and unique keys From d78809f825266dbfbd7bae538b4bd629cd9025e1 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Tue, 6 Aug 2024 14:09:46 +0800 Subject: [PATCH 6/6] Update sql-statements/sql-statement-create-table.md --- sql-statements/sql-statement-create-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-create-table.md b/sql-statements/sql-statement-create-table.md index 14af08fc4a7dc..78be305013231 100644 --- a/sql-statements/sql-statement-create-table.md +++ b/sql-statements/sql-statement-create-table.md @@ -258,7 +258,7 @@ mysql> DESC t1; * The `[ASC | DESC]` in `index_col_name` is currently parsed but ignored (MySQL 5.7 compatible behavior). * The `COMMENT` attribute does not support the `WITH PARSER` option. * TiDB supports 1017 columns in a single table by default and 4096 columns at most. The corresponding number limit in InnoDB is 1017 columns, and the hard limit in MySQL is 4096 columns. For details, see [TiDB Limitations](/tidb-limitations.md). -* TiDB supports `HASH`, `RANGE`, `LIST`, and `KEY` partitioning types. For an unsupported partition type, TiDB returns `Warning: Unsupported partition type %s, treat as normal table`, where `%s` is the specific unsupported partition type. +* TiDB supports `HASH`, `RANGE`, `LIST`, and `KEY` [partitioning types](/partitioned-table.md#partitioning-types). For an unsupported partition type, TiDB returns `Warning: Unsupported partition type %s, treat as normal table`, where `%s` is the specific unsupported partition type. ## See also