List:Commits« Previous MessageNext Message »
From:hhunger@mysql.com Date:April 5 2007 4:04pm
Subject:bk commit into 5.0 tree (hhunger:1.2435)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of hhunger. When hhunger does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-04-05 16:04:31+02:00, hhunger@stripped +83 -0
  test of row locking.

  mysql-test/suite/row_lock/include/row_lock.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +83 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_big_tab.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +94 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_big_tab.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +93 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +93 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_trig.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +96 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_trig.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_view.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +89 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_view.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_view_mix.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +92 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_view_mix.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_view_storedp.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +126 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_view_storedp.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/include/row_lock_view_trig.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +99 -0
    test of row locking.

  mysql-test/suite/row_lock/include/row_lock_view_trig.inc@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +142 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +32 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_3.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +32 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_3.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_4.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +142 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_4.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_5.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +32 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_5.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +97 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +145 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +113 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +151 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +37 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +34 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +40 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +48 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +40 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +312 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +47 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +183 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +38 -0
    test of row locking.

  mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +139 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +31 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_3.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +30 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_3.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_4.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +139 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_4.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_5.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +30 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_5.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +177 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +357 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +255 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +148 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +35 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +194 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +200 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +169 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +38 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +309 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +46 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +180 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +36 -0
    test of row locking.

  mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/readme.txt@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/readme.txt@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/summary_of_sel_test.txt@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +36 -0
    test of row locking.

  mysql-test/suite/row_lock/summary_of_sel_test.txt@stripped, 2007-04-05 16:00:48+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_1.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_1.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_2.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_2.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_3.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_3.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_4.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_4.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_5.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_5.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +10 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +10 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test@stripped, 2007-04-05 16:00:49+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +10 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +9 -0
    test of row locking.

  mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_3.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_3.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_4.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_4.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_5.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_5.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +7 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +7 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +7 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

  mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +6 -0
    test of row locking.

  mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test@stripped, 2007-04-05 16:00:50+02:00, hhunger@stripped +0 -0

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	hhunger
# Host:	hh-nb.hungers
# Root:	/data0/mysql/mysql-5.0-build
--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
eval $indext2;
COMMIT;
SELECT @@global.tx_isolation;

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP TABLE t1, t2;


--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_big_tab.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext2;
DELIMITER |;
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT count(*)/2 INTO res FROM t1;
    RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT count(*)/2 INTO res FROM t2;
    RETURN  res;
END;
|
DELIMITER ;|
CALL fill_t1 (10);
CALL fill_t2 (10);
COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
SELECT k from t1 WHERE k < half_t1();
SELECT k from t1 WHERE k >= half_t1();
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;
#DROP VIEW v1;


--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext2;
DELIMITER |;
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT MOD(k,2) INTO res FROM t1;
    RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT MOD(k,2) INTO res FROM t2;
    RETURN  res;
END;
|
DELIMITER ;|
eval CALL fill_t1 ($nbrows);
eval CALL fill_t2 ($nbrows);
COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;

COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP TABLE t1, t2;



--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
eval $indext2;
DELIMITER |;
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT MOD(k,2) INTO res FROM t1;
    RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
      INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
      SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
    DECLARE res int DEFAULT 0;
    SELECT MOD(k,2) INTO res FROM t2;
    RETURN  res;
END;
|
DELIMITER ;|
eval CALL fill_t1 ($nbrows);
eval CALL fill_t2 ($nbrows);
COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
#SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k FOR UPDATE;
DELETE FROM t1 WHERE t1.k % 2 = 1;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;

COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP TABLE t1, t2;



--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_trig.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
eval $indext2;
DELIMITER |;

CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
  FOR EACH ROW BEGIN
    UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
  END;
|

DELIMITER ;|

COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;
--echo connection root1;
CONNECTION root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP TABLE t1, t2;
#DROP VIEW v1;


--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_view.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
eval $indext2;
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
UPDATE v1 SET i=325 where i=125;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection default;
CONNECTION default;
UPDATE v1 SET i=323 where i=123;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection root1;
CONNECTION root1;
UPDATE v1 SET i=326 where i=126;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection default;
CONNECTION default;
UPDATE v1 SET i=324 where i=124;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;
#DROP VIEW v1;


--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_view_mix.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
eval $indext2;
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
# With the two separate selects (without join) the differs from
# that select with join.

# Both transaction are able to update the tables
eval EXPLAIN $select;
eval $select;

--echo connection root1;
CONNECTION root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
#UPDATE v1 SET i=325 where i=125;
#SELECT * FROM v1 ORDER BY i,l;
#SELECT * FROM t1 ORDER BY t1.k;

--echo connection default;
CONNECTION default;
UPDATE v1 SET i=323 where i=123;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection root1;
CONNECTION root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE v1 SET i=324 where i=124;
SELECT * FROM v1 ORDER BY i,l;
SELECT * FROM t1 ORDER BY t1.k;

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;
#DROP VIEW v1;


--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_view_storedp.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
DROP PROCEDURE IF EXISTS stp_t;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
CONNECT (root2, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
INSERT INTO t1 VALUES (5,127,5,127);
INSERT INTO t1 VALUES (6,128,6,128);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
INSERT INTO t2 VALUES (5,127,5,127);
INSERT INTO t2 VALUES (6,128,6,128);
eval $indext2;
CREATE VIEW v1 AS SELECT t1.i from t1;
DELIMITER |;

CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
  BEGIN
    UPDATE t2 SET i = p2 WHERE i = p1;
    UPDATE v1 SET i = p2 WHERE i = p1;
    SELECT * FROM v1 ORDER BY i;
    SELECT * FROM t1 ORDER BY t1.k;
    SELECT * FROM t2 ORDER BY t2.k;
  END;
|

DELIMITER ;|

COMMIT;
SELECT @@global.tx_isolation;
eval EXPLAIN $select;
eval $select;
--echo connection root1;
CONNECTION root1;
CALL stp_t (125, 225);

--echo connection root2;
CONNECTION root2;
CALL stp_t (127, 227);

--echo connection default;
CONNECTION default;
CALL stp_t (123, 223);

--echo connection root1;
CONNECTION root1;
CALL stp_t (126, 226);

--echo connection root2;
CONNECTION root2;
CALL stp_t (128, 228);

--echo connection default;
CONNECTION default;
CALL stp_t (124, 224);

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root2;
CONNECTION root2;
DELETE FROM t1 WHERE t1.i=228;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection root1;
CONNECTION root1;
COMMIT;

--echo connection default;
CONNECTION default;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;

--echo connection root2;
CONNECTION root2;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root2;

--echo connection default;
CONNECTION default;
--disable_warnings
DROP VIEW v1;
DROP PROCEDURE stp_t;
DROP TABLE t1, t2;
--enable_warnings

--- New file ---
+++ mysql-test/suite/row_lock/include/row_lock_view_trig.inc	07/04/05 16:00:48
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
--enable_warnings
SET autocommit=0;
# Create additional connections used through test
CONNECT (root1, localhost, root,,);
SET autocommit=0;
--echo connection default;
CONNECTION default;
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
eval $indext1;
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
eval $indext2;
CREATE VIEW v1 AS SELECT t1.i from t1;
DELIMITER |;

CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
  FOR EACH ROW BEGIN
    UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
  END;
|

DELIMITER ;|

COMMIT;
SELECT @@global.tx_isolation;
eval EXPLAIN $select;
eval $select;
--echo connection root1;
CONNECTION root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection default;
CONNECTION default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
COMMIT;

--echo connection root1;
CONNECTION root1;
ROLLBACK;

--echo connection default;
CONNECTION default;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;

--echo connection root1;
CONNECTION root1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
DISCONNECT root1;
--echo connection default;
CONNECTION default;
DROP TABLE t1, t2;
DROP VIEW v1;


--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_1.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	2	Using where; Using index
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_2.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_3.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_4.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	2	Using where; Using index
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_5.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT count(*)/2 INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT count(*)/2 INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (10);
CALL fill_t2 (10);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	10	Using where; Using index
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where; Using index
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
connection root1;
SELECT k from t1 WHERE k < half_t1();
k
0
1
2
3
4
SELECT k from t1 WHERE k >= half_t1();
k
5
6
7
8
9
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
0	1111	0	100
1	1111	1	101
2	1111	2	102
3	1111	3	103
4	1111	4	104
5	105	5	105
6	106	6	106
7	107	7	107
8	108	8	108
9	109	9	109
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
0	2222	0	100
1	2222	1	101
2	2222	2	102
3	2222	3	103
4	2222	4	104
5	105	5	105
6	106	6	106
7	107	7	107
8	108	8	108
9	109	9	109
connection default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (40);
CALL fill_t2 (40);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	ixi	5	NULL	40	Using where; Using index
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.k	1	
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
i	i
100	100
102	102
104	104
106	106
108	108
110	110
112	112
114	114
116	116
118	118
120	120
122	122
124	124
126	126
128	128
130	130
132	132
134	134
136	136
138	138
connection root1;
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
i	i
101	101
103	103
105	105
107	107
109	109
111	111
113	113
115	115
117	117
119	119
121	121
123	123
125	125
127	127
129	129
131	131
133	133
135	135
137	137
139	139
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
k	i	j	l
0	100	0	100
1	1111	1	101
2	102	2	102
3	1111	3	103
4	104	4	104
5	1111	5	105
6	106	6	106
7	1111	7	107
8	108	8	108
9	1111	9	109
10	110	10	110
11	1111	11	111
12	112	12	112
13	1111	13	113
14	114	14	114
15	1111	15	115
16	116	16	116
17	1111	17	117
18	118	18	118
19	1111	19	119
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
k	i	j	l
0	100	0	100
1	2222	1	101
2	102	2	102
3	2222	3	103
4	104	4	104
5	2222	5	105
6	106	6	106
7	2222	7	107
8	108	8	108
9	2222	9	109
10	110	10	110
11	2222	11	111
12	112	12	112
13	2222	13	113
14	114	14	114
15	2222	15	115
16	116	16	116
17	2222	17	117
18	118	18	118
19	2222	19	119
connection default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (40);
CALL fill_t2 (40);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	ixi	5	NULL	40	Using where; Using index
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.k	1	
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
i	i
100	100
102	102
104	104
106	106
108	108
110	110
112	112
114	114
116	116
118	118
120	120
122	122
124	124
126	126
128	128
130	130
132	132
134	134
136	136
138	138
connection root1;
DELETE FROM t1 WHERE t1.k % 2 = 1;
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
k	i	j	l
0	100	0	100
2	102	2	102
4	104	4	104
6	106	6	106
8	108	8	108
10	110	10	110
12	112	12	112
14	114	14	114
16	116	16	116
18	118	18	118
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	105	5	105
6	106	6	106
7	107	7	107
8	108	8	108
9	109	9	109
10	110	10	110
11	111	11	111
12	112	12	112
13	113	13	113
14	114	14	114
15	115	15	115
16	116	16	116
17	117	17	117
18	118	18	118
19	119	19	119
connection default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	226
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	226
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	2	Using where; Using index
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE v1 SET i=325 where i=125;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	index	NULL	PRIMARY	4	NULL	4	Using index
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
i
123
124
123
124
123
124
123
124
connection root1;
UPDATE v1 SET i=325 where i=125;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result	07/04/05 16:00:48
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	2	Using where; Using index
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE v1 SET i=323 where i=123;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result	07/04/05 16:00:49
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
1	SIMPLE	t2	index	NULL	PRIMARY	4	NULL	4	Using index
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
i
123
124
123
124
123
124
123
124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result	07/04/05 16:00:49
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
INSERT INTO t1 VALUES (5,127,5,127);
INSERT INTO t1 VALUES (6,128,6,128);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
INSERT INTO t2 VALUES (5,127,5,127);
INSERT INTO t2 VALUES (6,128,6,128);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
BEGIN
UPDATE t2 SET i = p2 WHERE i = p1;
UPDATE v1 SET i = p2 WHERE i = p1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	6	Using where; Using index
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
CALL stp_t (125, 225);
i
123
124
126
127
128
225
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root2;
CALL stp_t (127, 227);
i
123
124
125
126
128
227
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	128	6	128
connection default;
CALL stp_t (123, 223);
i
124
125
126
127
128
223
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
CALL stp_t (126, 226);
i
123
124
127
128
225
226
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
connection root2;
CALL stp_t (128, 228);
i
123
124
125
126
227
228
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
CALL stp_t (124, 224);
i
125
126
127
128
223
224
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
connection root2;
DELETE FROM t1 WHERE t1.i=228;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
COMMIT;
connection root1;
ROLLBACK;
connection root1;
COMMIT;
connection default;
SELECT * FROM v1 ORDER BY i;
i
125
126
127
128
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
SELECT * FROM v1 ORDER BY i;
i
125
126
127
128
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root2;
SELECT * FROM v1 ORDER BY i;
i
123
124
125
126
227
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
DROP TABLE t1, t2;
DROP VIEW v1;
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result	07/04/05 16:00:49
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
INSERT INTO t1 VALUES (5,127,5,127);
INSERT INTO t1 VALUES (6,128,6,128);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
INSERT INTO t2 VALUES (5,127,5,127);
INSERT INTO t2 VALUES (6,128,6,128);
#CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
BEGIN
UPDATE t2 SET i = p2 WHERE i = p1;
UPDATE v1 SET i = p2 WHERE i = p1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
CALL stp_t (125, 225);

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result	07/04/05 16:00:49
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	ixi	ixi	5	NULL	4	Using where; Using index
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM v1 ORDER BY i;
i
123
124
126
225
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM v1 ORDER BY i;
i
124
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM v1 ORDER BY i;
i
123
124
225
226
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
224
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;
DROP VIEW v1;
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result	07/04/05 16:00:49
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_3.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_4.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_5.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT count(*)/2 INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT count(*)/2 INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (10);
CALL fill_t2 (10);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
i	i
connection root1;
SELECT k from t1 WHERE k < half_t1();
k
0
3
1
2
4
SELECT k from t1 WHERE k >= half_t1();
k
6
7
9
5
8
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
0	1111	0	100
1	1111	1	101
2	1111	2	102
3	1111	3	103
4	1111	4	104
5	105	5	105
6	106	6	106
7	107	7	107
8	108	8	108
9	109	9	109
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
0	2222	0	100
1	2222	1	101
2	2222	2	102
3	2222	3	103
4	2222	4	104
5	105	5	105
6	106	6	106
7	107	7	107
8	108	8	108
9	109	9	109
connection default;
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	3333	5	105
6	3333	6	106
7	3333	7	107
8	3333	8	108
9	3333	9	109
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	4444	5	105
6	4444	6	106
7	4444	7	107
8	4444	8	108
9	4444	9	109
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	3333	5	105
6	3333	6	106
7	3333	7	107
8	3333	8	108
9	3333	9	109
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	4444	5	105
6	4444	6	106
7	4444	7	107
8	4444	8	108
9	4444	9	109
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	3333	5	105
6	3333	6	106
7	3333	7	107
8	3333	8	108
9	3333	9	109
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
0	100	0	100
1	101	1	101
2	102	2	102
3	103	3	103
4	104	4	104
5	4444	5	105
6	4444	6	106
7	4444	7	107
8	4444	8	108
9	4444	9	109
connection default;
DROP VIEW IF EXISTS v1;
Warnings:
Note	1051	Unknown table 'test.v1'
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (200);
CALL fill_t2 (200);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	200	Using where
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.k	1	
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
i	i
135	135
119	119
211	211
184	184
232	232
105	105
188	188
216	216
255	255
154	154
197	197
279	279
218	218
127	127
203	203
281	281
194	194
161	161
276	276
122	122
139	139
183	183
114	114
247	247
144	144
148	148
174	174
267	267
142	142
168	168
226	226
258	258
231	231
146	146
253	253
189	189
230	230
290	290
178	178
158	158
130	130
214	214
133	133
229	229
294	294
295	295
108	108
112	112
297	297
151	151
251	251
270	270
291	291
159	159
132	132
121	121
244	244
272	272
293	293
186	186
111	111
166	166
201	201
175	175
180	180
209	209
192	192
246	246
195	195
107	107
233	233
239	239
103	103
109	109
128	128
266	266
143	143
160	160
187	187
243	243
273	273
259	259
110	110
176	176
141	141
170	170
215	215
191	191
200	200
271	271
162	162
260	260
106	106
150	150
126	126
147	147
155	155
193	193
207	207
287	287
235	235
252	252
129	129
205	205
268	268
278	278
116	116
137	137
199	199
217	217
234	234
190	190
236	236
257	257
100	100
210	210
212	212
264	264
221	221
241	241
256	256
262	262
265	265
269	269
277	277
173	173
177	177
208	208
219	219
285	285
101	101
164	164
113	113
125	125
202	202
140	140
156	156
282	282
181	181
206	206
299	299
102	102
145	145
227	227
196	196
138	138
198	198
204	204
237	237
171	171
284	284
263	263
292	292
104	104
149	149
250	250
296	296
228	228
280	280
242	242
248	248
185	185
220	220
245	245
275	275
118	118
120	120
152	152
153	153
157	157
182	182
179	179
254	254
288	288
172	172
283	283
286	286
115	115
238	238
289	289
131	131
223	223
134	134
136	136
222	222
225	225
261	261
274	274
123	123
163	163
224	224
117	117
298	298
169	169
124	124
167	167
240	240
249	249
165	165
213	213
connection root1;
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
i	i
209	209
195	195
107	107
233	233
239	239
103	103
109	109
143	143
187	187
243	243
273	273
259	259
141	141
215	215
191	191
271	271
147	147
155	155
193	193
207	207
287	287
235	235
129	129
205	205
137	137
199	199
217	217
257	257
221	221
241	241
265	265
269	269
277	277
173	173
177	177
135	135
119	119
211	211
105	105
255	255
197	197
279	279
127	127
203	203
281	281
161	161
139	139
183	183
247	247
267	267
231	231
253	253
189	189
133	133
229	229
295	295
297	297
151	151
251	251
291	291
159	159
121	121
293	293
111	111
201	201
175	175
185	185
245	245
275	275
153	153
157	157
179	179
283	283
115	115
289	289
131	131
223	223
225	225
261	261
123	123
163	163
117	117
169	169
167	167
249	249
165	165
213	213
219	219
285	285
101	101
113	113
125	125
181	181
299	299
145	145
227	227
237	237
171	171
263	263
149	149
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
CREATE INDEX ixi ON t2 (i);
CREATE PROCEDURE fill_t1 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t1() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t1;
RETURN  res;
END;
|
CREATE PROCEDURE fill_t2 (IN upb int)
BEGIN
DECLARE cnt int DEFAULT 0;
WHILE cnt < upb DO
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
SET cnt= cnt+1;
END WHILE; 
END;
|
CREATE FUNCTION half_t2() RETURNS int
BEGIN
DECLARE res int DEFAULT 0;
SELECT MOD(k,2) INTO res FROM t2;
RETURN  res;
END;
|
CALL fill_t1 (200);
CALL fill_t2 (200);
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	200	Using where
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.k	1	
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
i	i
135	135
119	119
211	211
184	184
232	232
105	105
188	188
216	216
255	255
154	154
197	197
279	279
218	218
127	127
203	203
281	281
194	194
161	161
276	276
122	122
139	139
183	183
114	114
247	247
144	144
148	148
174	174
267	267
142	142
168	168
226	226
258	258
231	231
146	146
253	253
189	189
230	230
290	290
178	178
158	158
130	130
214	214
133	133
229	229
294	294
295	295
108	108
112	112
297	297
151	151
251	251
270	270
291	291
159	159
132	132
121	121
244	244
272	272
293	293
186	186
111	111
166	166
201	201
175	175
180	180
209	209
192	192
246	246
195	195
107	107
233	233
239	239
103	103
109	109
128	128
266	266
143	143
160	160
187	187
243	243
273	273
259	259
110	110
176	176
141	141
170	170
215	215
191	191
200	200
271	271
162	162
260	260
106	106
150	150
126	126
147	147
155	155
193	193
207	207
287	287
235	235
252	252
129	129
205	205
268	268
278	278
116	116
137	137
199	199
217	217
234	234
190	190
236	236
257	257
100	100
210	210
212	212
264	264
221	221
241	241
256	256
262	262
265	265
269	269
277	277
173	173
177	177
208	208
219	219
285	285
101	101
164	164
113	113
125	125
202	202
140	140
156	156
282	282
181	181
206	206
299	299
102	102
145	145
227	227
196	196
138	138
198	198
204	204
237	237
171	171
284	284
263	263
292	292
104	104
149	149
250	250
296	296
228	228
280	280
242	242
248	248
185	185
220	220
245	245
275	275
118	118
120	120
152	152
153	153
157	157
182	182
179	179
254	254
288	288
172	172
283	283
286	286
115	115
238	238
289	289
131	131
223	223
134	134
136	136
222	222
225	225
261	261
274	274
123	123
163	163
224	224
117	117
298	298
169	169
124	124
167	167
240	240
249	249
165	165
213	213
connection root1;
DELETE FROM t1 WHERE t1.k % 2 = 1;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	226
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	225
4	126	4	226
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	223
2	124	2	224
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE v1 SET i=325 where i=125;
SELECT * FROM v1 ORDER BY i,l;
i	l
123	123
123	124
123	125
123	126
124	123
124	124
124	125
124	126
126	123
126	124
126	125
126	126
325	123
325	124
325	125
325	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	126	4	126
connection default;
UPDATE v1 SET i=323 where i=123;
SELECT * FROM v1 ORDER BY i,l;
i	l
124	123
124	124
124	125
124	126
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE v1 SET i=326 where i=126;
SELECT * FROM v1 ORDER BY i,l;
i	l
123	123
123	124
123	125
123	126
124	123
124	124
124	125
124	126
325	123
325	124
325	125
325	126
326	123
326	124
326	125
326	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	326	4	126
connection default;
UPDATE v1 SET i=324 where i=124;
SELECT * FROM v1 ORDER BY i,l;
i	l
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
324	123
324	124
324	125
324	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	326	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
i
123
124
123
124
123
124
123
124
connection root1;
UPDATE v1 SET i=325 where i=125;
SELECT * FROM v1 ORDER BY i,l;
i	l
123	123
123	124
123	125
123	126
124	123
124	124
124	125
124	126
126	123
126	124
126	125
126	126
325	123
325	124
325	125
325	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	126	4	126
connection default;
UPDATE v1 SET i=323 where i=123;
SELECT * FROM v1 ORDER BY i,l;
i	l
124	123
124	124
124	125
124	126
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE v1 SET i=326 where i=126;
SELECT * FROM v1 ORDER BY i,l;
i	l
123	123
123	124
123	125
123	126
124	123
124	124
124	125
124	126
325	123
325	124
325	125
325	126
326	123
326	124
326	125
326	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	326	4	126
connection default;
UPDATE v1 SET i=324 where i=124;
SELECT * FROM v1 ORDER BY i,l;
i	l
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
324	123
324	124
324	125
324	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	325	3	125
4	326	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ref	ixi	ixi	5	test.t1.i	1	Using where
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
i	i
123	123
124	124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE v1 SET i=323 where i=123;
SELECT * FROM v1 ORDER BY i,l;
i	l
124	123
124	124
124	125
124	126
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE v1 SET i=324 where i=124;
SELECT * FROM v1 ORDER BY i,l;
i	l
125	123
125	124
125	125
125	126
126	123
126	124
126	125
126	126
323	123
323	124
323	125
323	126
324	123
324	124
324	125
324	126
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	323	1	123
2	324	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection default;
DROP VIEW IF EXISTS v1;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	4	
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
i
123
124
123
124
123
124
123
124
connection root1;
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
DROP PROCEDURE IF EXISTS stp_t;
SET autocommit=0;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
INSERT INTO t1 VALUES (5,127,5,127);
INSERT INTO t1 VALUES (6,128,6,128);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
INSERT INTO t2 VALUES (5,127,5,127);
INSERT INTO t2 VALUES (6,128,6,128);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
BEGIN
UPDATE t2 SET i = p2 WHERE i = p1;
UPDATE v1 SET i = p2 WHERE i = p1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
CALL stp_t (125, 225);
i
123
124
126
127
128
225
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root2;
CALL stp_t (127, 227);
i
123
124
125
126
128
227
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	128	6	128
connection default;
CALL stp_t (123, 223);
i
124
125
126
127
128
223
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
CALL stp_t (126, 226);
i
123
124
127
128
225
226
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
connection root2;
CALL stp_t (128, 228);
i
123
124
125
126
227
228
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
CALL stp_t (124, 224);
i
125
126
127
128
223
224
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
5	127	5	127
6	128	6	128
connection root2;
DELETE FROM t1 WHERE t1.i=228;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
COMMIT;
connection root1;
ROLLBACK;
connection root1;
COMMIT;
connection default;
SELECT * FROM v1 ORDER BY i;
i
125
126
127
128
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root1;
SELECT * FROM v1 ORDER BY i;
i
125
126
127
128
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	127	5	127
6	128	6	128
connection root2;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
227
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
5	227	5	127
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
5	227	5	127
6	228	6	128
connection default;
DROP VIEW v1;
DROP PROCEDURE stp_t;
DROP TABLE t1, t2;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
DROP PROCEDURE IF EXISTS stp_t;
SET autocommit=0;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
INSERT INTO t1 VALUES (5,127,5,127);
INSERT INTO t1 VALUES (6,128,6,128);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
INSERT INTO t2 VALUES (5,127,5,127);
INSERT INTO t2 VALUES (6,128,6,128);
#CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
BEGIN
UPDATE t2 SET i = p2 WHERE i = p1;
UPDATE v1 SET i = p2 WHERE i = p1;
SELECT * FROM v1 ORDER BY i;
SELECT * FROM t1 ORDER BY t1.k;
SELECT * FROM t2 ORDER BY t2.k;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
CALL stp_t (125, 225);

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	ixi	ixi	5	NULL	10	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
SELECT * FROM v1 ORDER BY i;
i
123
124
126
225
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	126	4	126
connection default;
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
SELECT * FROM v1 ORDER BY i;
i
124
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	124	2	124
3	125	3	125
4	126	4	126
connection root1;
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
SELECT * FROM v1 ORDER BY i;
i
123
124
225
226
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
224
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
DELETE FROM t1 WHERE t1.i=226;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	123	1	123
2	124	2	124
3	225	3	125
4	226	4	126
connection default;
DELETE FROM t1 WHERE t1.i=224;
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
COMMIT;
connection root1;
ROLLBACK;
connection default;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection root1;
SELECT * FROM v1 ORDER BY i;
i
125
126
223
SELECT * FROM t1 ORDER BY t1.k;
k	i	j	l
1	223	1	123
3	125	3	125
4	126	4	126
SELECT * FROM t2 ORDER BY t2.k;
k	i	j	l
1	223	1	123
2	224	2	124
3	125	3	125
4	126	4	126
connection default;
DROP TABLE t1, t2;
DROP VIEW v1;

--- New file ---
+++ mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result	07/04/05 16:00:49
DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
SET autocommit=0;
SET autocommit=0;
connection default;
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t1 VALUES (1,123,1,123);
INSERT INTO t1 VALUES (2,124,2,124);
INSERT INTO t1 VALUES (3,125,3,125);
INSERT INTO t1 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t1 (i);
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
INSERT INTO t2 VALUES (1,123,1,123);
INSERT INTO t2 VALUES (2,124,2,124);
INSERT INTO t2 VALUES (3,125,3,125);
INSERT INTO t2 VALUES (4,126,4,126);
#CREATE INDEX ixi ON t2 (i);
CREATE VIEW v1 AS SELECT t1.i from t1;
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
FOR EACH ROW BEGIN
UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
END;
|
COMMIT;
SELECT @@global.tx_isolation;
@@global.tx_isolation
REPEATABLE-READ
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
i
123
124
connection root1;
UPDATE t2 SET t2.i=225 WHERE t2.i=125;

--- New file ---
+++ mysql-test/suite/row_lock/readme.txt	07/04/05 16:00:48
All row lock test with InnoDB have to be executed with the options

--innodb_lock_wait_timeout=1
--innodb_locks_unsafe_for_binlog 

for example

perl mysql-test-run.pl --mysqld=--innodb_lock_wait_timeout=2 --mysqld=--innodb_locks_unsafe_for_binlog --suite=row_lock innodb_row_lock_2


--- New file ---
+++ mysql-test/suite/row_lock/summary_of_sel_test.txt	07/04/05 16:00:48
Test plan:
Create 2 tables with a primary key and 3 integer columns. Both get the same rows (1,123,1,123),(2,124,2,124),(3,125,3,125),(4,126,4,126). The second and third column may get an index to have cases with, without and mutilple index. Create views on the tables. Create an update trigger. Create a stored procedure updating the table. Create a stored function updating the table and deliver the key as result.

The test isself consists of 2 sessions (transactions) running in "parallel" (same user "root") accessing and locking the same tables on basis of a row lock. Expected is that both sessions(transactions) can update the table successfully.

First session
execute an explain to every select and one of the following selects on the first half of table t1:  
- select <non index columns> ... where ... for update;
- select <non index columns> ... where ... lock in share mode;
- select <indexed columns> ... where ... for update;
- select <indexed columns> ... where ... lock in share mode;
- select <indexed columns> ... ignore index ... where ... for update;
- select <indexed columns> ... ignore index ... where ... lock in share mode;
- select ... where (select...) ... for update;
- select ... where (select...) ... lock in share mode;
- (select ... where) union (select ... where) for update;
- (select ... where) union (select ... where) lock in...;
- select <view> ... where ... for update;
- select <view> ... where ... lock in ...;
- select <join> ... where ... for update;
- select <join> ... where ... lock in ...;
Then executes
- update
- delete
- trigger accessing table t1
- stored procedure accessing table t1
- stored function accessing table t1

Second session
executes the same on the last half of table t1

call of mysqld with option
--innodb_locks_unsafe_for_binlog

As the tests above work with small tables (<10 rows) there must be at least one test with a big table (>1000 rows) doing a table scan.
 

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_1.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_2.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_3.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_4.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_5.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $nbrows= 40;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab_1.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test	07/04/05 16:00:49
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $nbrows= 40;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab_2.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_trig.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_trig.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_mix.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
#let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_mix.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_storedp.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_storedp.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_trig.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test	07/04/05 16:00:50
--source include/have_innodb.inc
SELECT @@global.innodb_table_locks into @table_locks;
SET @@global.innodb_table_locks= OFF;
let $engine= InnoDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_trig.inc
SET @@global.innodb_table_locks= @table_locks;

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_3.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_4.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_5.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $nbrows= 200;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab_1.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $nbrows= 200;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_big_tab_2.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_trig.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_trig.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view.inc


--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_mix.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_mix.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_storedp.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_storedp.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= CREATE INDEX ixi ON t1 (i);
let $indext2= CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_trig.inc

--- New file ---
+++ mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test	07/04/05 16:00:50
--source include/have_ndb.inc
let $engine= NDB;
let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE; 
let $indext1= #CREATE INDEX ixi ON t1 (i);
let $indext2= #CREATE INDEX ixi ON t2 (i);
--source suite/row_lock/include/row_lock_view_trig.inc

Thread
bk commit into 5.0 tree (hhunger:1.2435)hhunger @ mysql . com5 Apr