diff --git a/functions-and-operators/tidb-functions.md b/functions-and-operators/tidb-functions.md index 025168b9fb888..07a20be367a30 100644 --- a/functions-and-operators/tidb-functions.md +++ b/functions-and-operators/tidb-functions.md @@ -22,7 +22,9 @@ TableStmt ::= "TIDB_DECODE_KEY(" STR ")" ``` -### Example +### Examples + +In the following example, the table `t1` has a hidden `rowid` that is generated by TiDB. The `TIDB_DECODE_KEY` is used in the statement. From the result, you can see that the hidden `rowid` is decoded and output, which is a typical result for the non-clustered primary key. {{< copyable "sql" >}} @@ -37,6 +39,69 @@ TIDB_DECODE_KEY(START_KEY): {"_tidb_rowid":1958897,"table_id":"59"} 1 row in set (0.00 sec) ``` +In the following example, the table `t2` has a compound clustered primary key. From the JSON output, you can see a `handle` that contains the name and value for both of the columns that are part of the primary key. + +{{< copyable "sql" >}} + +```sql +show create table t2\G +``` + +```sql +*************************** 1. row *************************** + Table: t2 +Create Table: CREATE TABLE `t2` ( + `id` binary(36) NOT NULL, + `a` tinyint(3) unsigned NOT NULL, + `v` varchar(512) DEFAULT NULL, + PRIMARY KEY (`a`,`id`) /*T![clustered_index] CLUSTERED */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +1 row in set (0.001 sec) +``` + +{{< copyable "sql" >}} + +```sql +select * from information_schema.tikv_region_status where table_name='t2' limit 1\G +``` + +```sql +*************************** 1. row *************************** + REGION_ID: 48 + START_KEY: 7480000000000000FF3E5F720400000000FF0000000601633430FF3338646232FF2D64FF3531632D3131FF65FF622D386337352DFFFF3830653635303138FFFF61396265000000FF00FB000000000000F9 + END_KEY: + TABLE_ID: 62 + DB_NAME: test + TABLE_NAME: t2 + IS_INDEX: 0 + INDEX_ID: NULL + INDEX_NAME: NULL + EPOCH_CONF_VER: 1 + EPOCH_VERSION: 38 + WRITTEN_BYTES: 0 + READ_BYTES: 0 + APPROXIMATE_SIZE: 136 + APPROXIMATE_KEYS: 479905 + REPLICATIONSTATUS_STATE: NULL +REPLICATIONSTATUS_STATEID: NULL +1 row in set (0.005 sec) +``` + +{{< copyable "sql" >}} + +```sql +select tidb_decode_key('7480000000000000FF3E5F720400000000FF0000000601633430FF3338646232FF2D64FF3531632D3131FF65FF622D386337352DFFFF3830653635303138FFFF61396265000000FF00FB000000000000F9'); +``` + +```sql ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| tidb_decode_key('7480000000000000FF3E5F720400000000FF0000000601633430FF3338646232FF2D64FF3531632D3131FF65FF622D386337352DFFFF3830653635303138FFFF61396265000000FF00FB000000000000F9') | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| {"handle":{"a":"6","id":"c4038db2-d51c-11eb-8c75-80e65018a9be"},"table_id":62} | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +1 row in set (0.001 sec) +``` + ### MySQL compatibility The `TIDB_DECODE_KEY` function is TiDB-specific and not compatible with MySQL.