Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.3.9, 10.3(EOL)
-
None
-
CentOS7
Description
If you issue an ALTER TABLE to make a column that is a foreign key NOT NULL you get the following error:
Cannot change column 'c1': used in a foreign key constraint 'p2c_ibfk_1'
|
In prior versions of MariaDB this was allowed and did not generate an error. Further, if you issue an ALTER TABLE to make a column that is a foreign key NULLable you do NOT get any error message.
Attachments
Issue Links
- relates to
-
MDEV-14632 Assertion `!((new_col->prtype ^ col->prtype) & ~256U)' failed in row_log_table_apply_convert_mrec
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Summary | ALTER TABLE CHANGE COLUMN c1 c1 bigint NOT NULL - generates error | ALTER TABLE CHANGE COLUMN c1 c1 bigint NOT NULL - generates error if table uses SYSTEM VERSIONING |
Component/s | System versioning [ 14303 ] |
Affects Version/s | 10.3 [ 22126 ] |
Fix Version/s | 10.3 [ 22126 ] |
Comment |
[ Thanks for the report! Reproducible with Innodb on MariaDB 10.3
{noformat} --source include/have_innodb.inc SET @@system_versioning_alter_history = 1; create table t1 (a int not null, key(a))engine=innodb with system versioning; create table t2 (b int, foreign key(b) references t1(a))engine=innodb with system versioning; alter table t2 modify column b int default null; drop table t2,t1; create table t1 (a int, key(a))engine=innodb with system versioning; create table t2 (b int, foreign key(b) references t1(a))engine=innodb with system versioning; alter table t2 modify column b int not null; drop table t2,t1; mysqltest: At line 17: query 'alter table t2 modify column b int not null' failed: 1832: Cannot change column 'b': used in a foreign key constraint 't2_ibfk_1' {noformat} ] |
Assignee | Marko Mäkelä [ marko ] |
Assignee | Marko Mäkelä [ marko ] | Aleksey Midenok [ midenok ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Aleksey Midenok [ midenok ] | Eugene Kosov [ kevg ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Assignee | Eugene Kosov [ kevg ] | Aleksey Midenok [ midenok ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Link |
This issue relates to |
Status | Stalled [ 10000 ] | In Progress [ 3 ] |
Status | In Progress [ 3 ] | Stalled [ 10000 ] |
Status | Stalled [ 10000 ] | In Progress [ 3 ] |
Assignee | Aleksey Midenok [ midenok ] | Marko Mäkelä [ marko ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Assignee | Marko Mäkelä [ marko ] | Aleksey Midenok [ midenok ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
issue.field.resolutiondate | 2018-11-01 14:46:03.0 | 2018-11-01 14:46:03.645 |
Fix Version/s | 10.3.11 [ 23141 ] | |
Fix Version/s | 10.3 [ 22126 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 89037 ] | MariaDB v4 [ 154840 ] |
Thanks for the report! Reproducible with Innodb on MariaDB 10.3
--source include/have_innodb.inc
SET @@system_versioning_alter_history = 1;
create table t1 (a int not null, key(a))engine=innodb with system versioning;
create table t2 (b int, foreign key(b) references t1(a))engine=innodb with system versioning;
alter table t2 modify column b int default null;
drop table t2,t1;
create table t1 (a int, key(a))engine=innodb with system versioning;
create table t2 (b int, foreign key(b) references t1(a))engine=innodb with system versioning;
alter table t2 modify column b int not null;
drop table t2,t1;
mysqltest: At line 17: query 'alter table t2 modify column b int not null' failed: 1832: Cannot change column 'b': used in a foreign key constraint 't2_ibfk_1'