Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-15476

Inplace algorithm doesn't support changing virtual column datatype

Details

    Description

      Inplace algorithm doesn't support change of virtual column data type.

      --source include/have_innodb.inc
      create table t1(f1 int not null, f2 char(100) as ("test") virtual)engine=innodb;
      alter table t1 modify column f2 varchar(200) as ("db") virtual, algorithm=inplace;
      drop table t1;
      

      Above alter fails with the following error:

      failed: 1845: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY 

      There is no reason mentioned why inplace fails. Above alter doesn't affect the data or rebuild
      the table. It should be part of INNOBASE_INPLACE_IGNORE flag. I think inplace should support this operation.

      Attachments

        Issue Links

          Activity

            create table t1(f1 int not null, f2 int as (f1 * f1) virtual)engine=innodb;
            alter table t1 change f2 f2 int as (f1) virtual, algorithm=inplace;
            drop table t1;
            

            Above alter passes in inplace algorithm. Only difference here is datatype change flag enabled in the bug page testcase.
            I think it should be fixable in innodb itself.

            I have to change reported version to 10.1

            thiru Thirunarayanan Balathandayuthapani added a comment - create table t1(f1 int not null, f2 int as (f1 * f1) virtual)engine=innodb; alter table t1 change f2 f2 int as (f1) virtual, algorithm=inplace; drop table t1; Above alter passes in inplace algorithm. Only difference here is datatype change flag enabled in the bug page testcase. I think it should be fixable in innodb itself. I have to change reported version to 10.1

            --source include/have_innodb.inc
            create table t1(f1 int not null, f2 int as (f1) virtual, f3 int not null)engine=innodb;
            insert into t1(f1, f3) values(1, 1);
             
            alter table t1 modify column f2 int as (f1) virtual after f3, algorithm=inplace;
             
            drop table t1;
            

            The above alter fails in inplace. It doesn't make sense for these virtual column restriction.

            thiru Thirunarayanan Balathandayuthapani added a comment - --source include/have_innodb.inc create table t1(f1 int not null, f2 int as (f1) virtual, f3 int not null)engine=innodb; insert into t1(f1, f3) values(1, 1);   alter table t1 modify column f2 int as (f1) virtual after f3, algorithm=inplace;   drop table t1; The above alter fails in inplace. It doesn't make sense for these virtual column restriction.

            People

              thiru Thirunarayanan Balathandayuthapani
              thiru Thirunarayanan Balathandayuthapani
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.