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

Cascade foreign key updates do not apply in online alter

Details

    Description

      --source include/have_debug_sync.inc
      --source include/have_innodb.inc
       
      create table t1 (a int primary key) engine=InnoDB;
      insert into t1 values (1),(2),(3);
      create table t2 (b int, foreign key (b) references t1 (a) on update cascade) engine=InnoDB;
      insert into t2 values (1),(2),(3);
      --send
        set debug_sync= 'now wait_for downgraded';
       
      --connect (con_alter,localhost,root,,test)
      set debug_sync= 'alter_table_online_downgraded signal downgraded wait_for goforit';
      --send
        alter table t2 add c int, algorithm=copy, lock=none;
       
      --connection default
      --reap
      update t1 set a = 22 where a = 2;
      set debug_sync= 'now signal goforit';
       
      --connection con_alter
      --reap
      select * from t2;
       
      # Cleanup
      drop table t2, t1;
      set debug_sync= reset;
      

      bb-10.10-MDEV-16329 49ad87590

      connection default;
      update t1 set a = 22 where a = 2;
      set debug_sync= 'now signal goforit';
      connection con_alter;
      select * from t2;
      b	c
      1	NULL
      2	NULL
      3	NULL
      

      Expected 22 instead of 2, via update cascade. 2 is now an orphan row.

      Attachments

        Issue Links

          Activity

            elenst Elena Stepanova created issue -
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            nikitamalyavin Nikita Malyavin made changes -
            Assignee Sergei Golubchik [ serg ] Nikita Malyavin [ nikitamalyavin ]
            nikitamalyavin Nikita Malyavin made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            nikitamalyavin Nikita Malyavin made changes -
            Summary Updates through foreign key cascade get lost when online alter is in progress MDEV-29068 Cascade foreign key updates do not apply in online alter
            nikitamalyavin Nikita Malyavin made changes -
            Summary MDEV-29068 Cascade foreign key updates do not apply in online alter Cascade foreign key updates do not apply in online alter
            nikitamalyavin Nikita Malyavin made changes -
            Assignee Nikita Malyavin [ nikitamalyavin ] Marko Mäkelä [ marko ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            nikitamalyavin Nikita Malyavin made changes -
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ] Nikita Malyavin [ nikitamalyavin ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            serg Sergei Golubchik made changes -
            Fix Version/s 10.11 [ 27614 ]
            Fix Version/s 10.10 [ 27530 ]
            nikitamalyavin Nikita Malyavin made changes -
            Comment [ {quote}
            bq. Unlike THD, InnoDB always knew about the internals of TABLE and TABLE_SHARE. So, please do not add sql_get_maria_table_record().

            Do you suggest to just include "table.h"?
            {quote}

            [~marko] I've checked, {{#include "table.h"}} appears only in ha_innobase.cc, so I think it's not a good idea.

            I tried to move the function there before, but something has spoiled the impression, so I reverted. Maybe it was an apparent sql_is_online_alter_table call I couldn't move out of row0ins, but since I'm moving the check to ha_innobase::open, maybe it'll work, so I'll try again ]
            nikitamalyavin Nikita Malyavin made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            nikitamalyavin Nikita Malyavin made changes -
            nikitamalyavin Nikita Malyavin made changes -
            marko Marko Mäkelä made changes -
            nikitamalyavin Nikita Malyavin made changes -
            Status In Progress [ 3 ] Stalled [ 10000 ]
            nikitamalyavin Nikita Malyavin made changes -
            Assignee Nikita Malyavin [ nikitamalyavin ] Sergei Golubchik [ serg ]
            Status Stalled [ 10000 ] In Review [ 10002 ]
            serg Sergei Golubchik made changes -
            serg Sergei Golubchik made changes -
            nikitamalyavin Nikita Malyavin made changes -
            Assignee Sergei Golubchik [ serg ] Nikita Malyavin [ nikitamalyavin ]
            nikitamalyavin Nikita Malyavin made changes -
            Status In Review [ 10002 ] Stalled [ 10000 ]
            nikitamalyavin Nikita Malyavin made changes -
            Assignee Nikita Malyavin [ nikitamalyavin ] Sergei Golubchik [ serg ]
            Status Stalled [ 10000 ] In Review [ 10002 ]
            nikitamalyavin Nikita Malyavin made changes -
            Fix Version/s 10.12 [ 28320 ]
            Fix Version/s 10.11 [ 27614 ]
            ralf.gebhardt Ralf Gebhardt made changes -
            Fix Version/s 11.1 [ 28549 ]
            Fix Version/s 11.0 [ 28320 ]
            serg Sergei Golubchik made changes -
            Assignee Sergei Golubchik [ serg ] Nikita Malyavin [ nikitamalyavin ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            nikitamalyavin Nikita Malyavin made changes -
            Status Stalled [ 10000 ] In Testing [ 10301 ]
            elenst Elena Stepanova made changes -
            ralf.gebhardt Ralf Gebhardt made changes -
            Fix Version/s 11.2 [ 28603 ]
            Fix Version/s 11.1 [ 28549 ]
            serg Sergei Golubchik made changes -
            Fix Version/s 11.2.1 [ 29034 ]
            Fix Version/s 11.2 [ 28603 ]
            Resolution Fixed [ 1 ]
            Status In Testing [ 10301 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            serg Sergei Golubchik made changes -

            People

              nikitamalyavin Nikita Malyavin
              elenst Elena Stepanova
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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