[FTS] limit the number of primary key columns, whew alter table add primary key.
This commit is contained in:
@ -3591,6 +3591,11 @@ int ObDDLService::add_primary_key(const ObIArray<ObString> &pk_column_names, ObT
|
||||
ObTableSchema::const_column_iterator tmp_begin = new_table_schema.column_begin();
|
||||
ObTableSchema::const_column_iterator tmp_end = new_table_schema.column_end();
|
||||
ObColumnSchemaV2 *del_hidden_pk_column = nullptr;
|
||||
if (pk_column_names.count() > common::OB_USER_MAX_ROWKEY_COLUMN_NUMBER) {
|
||||
ret = OB_ERR_TOO_MANY_ROWKEY_COLUMNS;
|
||||
LOG_USER_ERROR(OB_ERR_TOO_MANY_ROWKEY_COLUMNS, OB_USER_MAX_ROWKEY_COLUMN_NUMBER);
|
||||
LOG_WARN("too many rowkey columns", K(ret), K(pk_column_names.count()));
|
||||
}
|
||||
for (; OB_SUCC(ret) && tmp_begin != tmp_end; tmp_begin++) {
|
||||
ObColumnSchemaV2 *col = (*tmp_begin);
|
||||
if (OB_ISNULL(col)) {
|
||||
|
||||
@ -57,3 +57,77 @@ ALTER TABLE Z0CASE DROP PRIMARY KEY, ADD PRIMARY KEY(C2, C3);
|
||||
ERROR HY000: 'Defining a generated column as primary key' is not supported for generated columns.
|
||||
ALTER TABLE Z0CASE DROP PRIMARY KEY, ADD PRIMARY KEY(C2, C1);
|
||||
DROP TABLE Z0CASE;
|
||||
drop table if exists t_add_pk;
|
||||
create table t_add_pk (col1 int, col2 int, col3 int,
|
||||
col4 int, col5 int, col6 int, col7 int, col8 int,
|
||||
col9 int, col10 int, col11 int, col12 int, col13 int,
|
||||
col14 int, col15 int, col16 int, col17 int, col18 int,
|
||||
col19 int, col20 int, col21 int, col22 int, col23 int,
|
||||
col24 int, col25 int, col26 int, col27 int, col28 int,
|
||||
col29 int, col30 int, col31 int, col32 int, col33 int,
|
||||
col34 int, col35 int, col36 int, col37 int, col38 int,
|
||||
col39 int, col40 int, col41 int, col42 int, col43 int,
|
||||
col44 int, col45 int, col46 int, col47 int, col48 int,
|
||||
col49 int, col50 int, col51 int, col52 int, col53 int,
|
||||
col54 int, col55 int, col56 int, col57 int, col58 int,
|
||||
col59 int, col60 int, col61 int, col62 int, col63 int,
|
||||
col64 int, col65 int,
|
||||
col varchar(20),
|
||||
primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64
|
||||
)
|
||||
);
|
||||
alter table t_add_pk drop primary key, add primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
);
|
||||
ERROR 42000: Too many key parts specified; max 64 parts allowed
|
||||
alter table t_add_pk drop primary key;
|
||||
alter table t_add_pk add primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
);
|
||||
ERROR 42000: Too many key parts specified; max 64 parts allowed
|
||||
drop table if exists t_with_pk;
|
||||
create table t_with_pk (col1 int, col2 int, col3 int,
|
||||
col4 int, col5 int, col6 int, col7 int, col8 int,
|
||||
col9 int, col10 int, col11 int, col12 int, col13 int,
|
||||
col14 int, col15 int, col16 int, col17 int, col18 int,
|
||||
col19 int, col20 int, col21 int, col22 int, col23 int,
|
||||
col24 int, col25 int, col26 int, col27 int, col28 int,
|
||||
col29 int, col30 int, col31 int, col32 int, col33 int,
|
||||
col34 int, col35 int, col36 int, col37 int, col38 int,
|
||||
col39 int, col40 int, col41 int, col42 int, col43 int,
|
||||
col44 int, col45 int, col46 int, col47 int, col48 int,
|
||||
col49 int, col50 int, col51 int, col52 int, col53 int,
|
||||
col54 int, col55 int, col56 int, col57 int, col58 int,
|
||||
col59 int, col60 int, col61 int, col62 int, col63 int,
|
||||
col64 int, col65 int,
|
||||
col varchar(20),
|
||||
primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
)
|
||||
);
|
||||
ERROR 42000: Too many key parts specified; max 64 parts allowed
|
||||
|
||||
@ -77,4 +77,88 @@ CREATE TABLE Z0CASE(C1 CHAR(10), C2 INT, C3 INT GENERATED ALWAYS AS (C2+1) STORE
|
||||
--error 3106
|
||||
ALTER TABLE Z0CASE DROP PRIMARY KEY, ADD PRIMARY KEY(C2, C3);
|
||||
ALTER TABLE Z0CASE DROP PRIMARY KEY, ADD PRIMARY KEY(C2, C1);
|
||||
DROP TABLE Z0CASE;
|
||||
DROP TABLE Z0CASE;
|
||||
|
||||
# test add pk, and the column numbers of the pk overtake OB_USER_MAX_ROWKEY_COLUMN_NUMBER
|
||||
--disable_warnings
|
||||
drop table if exists t_add_pk;
|
||||
--enable_warnings
|
||||
create table t_add_pk (col1 int, col2 int, col3 int,
|
||||
col4 int, col5 int, col6 int, col7 int, col8 int,
|
||||
col9 int, col10 int, col11 int, col12 int, col13 int,
|
||||
col14 int, col15 int, col16 int, col17 int, col18 int,
|
||||
col19 int, col20 int, col21 int, col22 int, col23 int,
|
||||
col24 int, col25 int, col26 int, col27 int, col28 int,
|
||||
col29 int, col30 int, col31 int, col32 int, col33 int,
|
||||
col34 int, col35 int, col36 int, col37 int, col38 int,
|
||||
col39 int, col40 int, col41 int, col42 int, col43 int,
|
||||
col44 int, col45 int, col46 int, col47 int, col48 int,
|
||||
col49 int, col50 int, col51 int, col52 int, col53 int,
|
||||
col54 int, col55 int, col56 int, col57 int, col58 int,
|
||||
col59 int, col60 int, col61 int, col62 int, col63 int,
|
||||
col64 int, col65 int,
|
||||
col varchar(20),
|
||||
primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64
|
||||
)
|
||||
);
|
||||
|
||||
--error 1070
|
||||
alter table t_add_pk drop primary key, add primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
);
|
||||
|
||||
alter table t_add_pk drop primary key;
|
||||
--error 1070
|
||||
alter table t_add_pk add primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
);
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t_with_pk;
|
||||
--enable_warnings
|
||||
|
||||
--error 1070
|
||||
create table t_with_pk (col1 int, col2 int, col3 int,
|
||||
col4 int, col5 int, col6 int, col7 int, col8 int,
|
||||
col9 int, col10 int, col11 int, col12 int, col13 int,
|
||||
col14 int, col15 int, col16 int, col17 int, col18 int,
|
||||
col19 int, col20 int, col21 int, col22 int, col23 int,
|
||||
col24 int, col25 int, col26 int, col27 int, col28 int,
|
||||
col29 int, col30 int, col31 int, col32 int, col33 int,
|
||||
col34 int, col35 int, col36 int, col37 int, col38 int,
|
||||
col39 int, col40 int, col41 int, col42 int, col43 int,
|
||||
col44 int, col45 int, col46 int, col47 int, col48 int,
|
||||
col49 int, col50 int, col51 int, col52 int, col53 int,
|
||||
col54 int, col55 int, col56 int, col57 int, col58 int,
|
||||
col59 int, col60 int, col61 int, col62 int, col63 int,
|
||||
col64 int, col65 int,
|
||||
col varchar(20),
|
||||
primary key (
|
||||
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
col21, col22, col23, col24, col25, col26, col27, col28, col29, col30,
|
||||
col31, col32, col33, col34, col35, col36, col37, col38, col39, col40,
|
||||
col41, col42, col43, col44, col45, col46, col47, col48, col49, col50,
|
||||
col51, col52, col53, col54, col55, col56, col57, col58, col59, col60,
|
||||
col61, col62, col63, col64, col65
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user