[PATCH] Revert "Add more tests for DDL outside autocommit mode."

Alexander Turenko alexander.turenko at tarantool.org
Sun Apr 7 09:34:47 MSK 2019


Konstantin says 'ok' privately.

Pushed to master. Updated the issue (#4093) to don't forget to enable
these test cases back.

WBR, Alexander Turenko.

On Sat, Apr 06, 2019 at 12:32:26AM +0300, Alexander Turenko wrote:
> This reverts commit 14a87bb712277ab49db564914ed33de538437250.
> 
> The test cases generate corrupted xlog files (see #4093) and don't allow
> other tests to proceed successfully, so we need to temporary disable
> these cases. They should be enabled back in the scope of #4093.
> ---
> 
> https://github.com/tarantool/tarantool/issues/4093
> https://github.com/tarantool/tarantool/tree/Totktonada/revert-ddl-txn-test
> 
>  test/box/transaction.result   | 172 ----------------------------------
>  test/box/transaction.test.lua | 107 ---------------------
>  2 files changed, 279 deletions(-)
> 
> diff --git a/test/box/transaction.result b/test/box/transaction.result
> index bc50735b7..807cd5c7c 100644
> --- a/test/box/transaction.result
> +++ b/test/box/transaction.result
> @@ -526,175 +526,3 @@ space:select()
>  space:drop()
>  ---
>  ...
> --- In order to implement a transactional applier, we  lifted a
> --- restriction that DDL must always run in autocommit mode. The
> --- applier always starts a multi-statement transaction, even for
> --- single-statement transactions received from the master. Now
> --- we only require a DDL statement to be the first statement in a
> --- transaction. We even allow DDL to be followed by DML, since
> --- it's harmless: if DML yields, the entire transaction is rolled
> --- back by a yield trigger. Test that.
> -_ = box.schema.space.create('memtx', {engine='memtx'})
> ----
> -...
> -_ = box.space.memtx:create_index('pk')
> ----
> -...
> -box.space.memtx:insert{1, 'memtx'}
> ----
> -- [1, 'memtx']
> -...
> -_ = box.schema.space.create('vinyl', {engine='vinyl'})
> ----
> -...
> -_ = box.space.vinyl:create_index('pk')
> ----
> -...
> -box.space.vinyl:insert{1, 'vinyl'}
> ----
> -- [1, 'vinyl']
> -...
> -_ = box.schema.space.create('test')
> ----
> -...
> -test_run:cmd("setopt delimiter ';'")
> ----
> -- true
> -...
> ---
> --- Test DDL object creation and deletion should leave no
> --- effects after rollback
> ---
> -box.begin()
> -box.space.test:create_index('pk')
> -box.rollback();
> ----
> -...
> -box.space.test.index.pk;
> ----
> -- null
> -...
> ---
> ---
> -_ = box.space.test:create_index('pk');
> ----
> -...
> -box.space.test:insert{1}
> -
> -box.begin()
> -box.space.test:truncate()
> -box.rollback();
> ----
> -...
> -box.space.test:select{};
> ----
> -- - [1]
> -...
> ---
> ---
> --- DDL followed by a select from memtx space. Such
> --- a select doesn't yield.
> ---
> -box.begin()
> -box.space.test:truncate()
> -box.space.memtx:select{}
> -box.commit();
> ----
> -...
> --- DDL and select from a vinyl space. Multi-engine transaction
> --- is not allowed.
> --- A transaction is left open due to an exception in the Lua fragment
> -box.begin()
> -box.space.test:truncate()
> -box.space.vinyl:select{}
> -
> -box.rollback();
> ----
> -- error: A multi-statement transaction can not use multiple storage engines
> -...
> --- DDL as a second statement - doesn't work
> -box.begin()
> -box.space.memtx:insert{2, 'truncate'}
> -box.space.test:truncate();
> ----
> -- error: 'Operation is not permitted when there is an active transaction '
> -...
> --- A transaction is left open due to an exception in the Lua fragment
> -box.rollback();
> ----
> -...
> -box.space.memtx:select{};
> ----
> -- - [1, 'memtx']
> -...
> --- DML as a second statement - works if the engine is the same
> -box.begin()
> -box.space.test:truncate()
> -box.space.memtx:insert{2, 'truncate'}
> -box.commit();
> ----
> -...
> -box.space.memtx:select{};
> ----
> -- - [1, 'memtx']
> -  - [2, 'truncate']
> -...
> --- DML as a second statement - works if the engine is the same
> -box.begin()
> -box.space.test:truncate()
> -box.space.vinyl:insert{2, 'truncate'};
> ----
> -- error: A multi-statement transaction can not use multiple storage engines
> -...
> --- A transaction is left open due to an exception in the above fragment
> -box.rollback();
> ----
> -...
> -box.space.vinyl:select{};
> ----
> -- - [1, 'vinyl']
> -...
> --- Two DDL satements in a row
> -box.begin()
> -box.space.test:truncate()
> -box.space.test:truncate();
> ----
> -- error: Space _truncate does not support multi-statement transactions
> -...
> --- A transaction is left open due to an exception in the above fragment
> -box.rollback();
> ----
> -...
> --- Two DDL stateemnts on different engines
> -box.begin()
> -box.space.memtx:truncate()
> -box.space.vinyl:truncate();
> ----
> -- error: Space _truncate does not support multi-statement transactions
> -...
> -box.rollback();
> ----
> -...
> -box.space.memtx:select{};
> ----
> -- - [1, 'memtx']
> -  - [2, 'truncate']
> -...
> -box.space.vinyl:select{};
> ----
> -- - [1, 'vinyl']
> -...
> --- cleanup
> -test_run:cmd("setopt delimiter ''");
> ----
> -- true
> -...
> -if box.space.test then box.space.test:drop() end
> ----
> -...
> -box.space.memtx:drop()
> ----
> -...
> -box.space.vinyl:drop()
> ----
> -...
> diff --git a/test/box/transaction.test.lua b/test/box/transaction.test.lua
> index a6789316c..0d212ca29 100644
> --- a/test/box/transaction.test.lua
> +++ b/test/box/transaction.test.lua
> @@ -256,110 +256,3 @@ test_run:cmd("setopt delimiter ''");
>  
>  space:select()
>  space:drop()
> -
> --- In order to implement a transactional applier, we  lifted a
> --- restriction that DDL must always run in autocommit mode. The
> --- applier always starts a multi-statement transaction, even for
> --- single-statement transactions received from the master. Now
> --- we only require a DDL statement to be the first statement in a
> --- transaction. We even allow DDL to be followed by DML, since
> --- it's harmless: if DML yields, the entire transaction is rolled
> --- back by a yield trigger. Test that.
> -_ = box.schema.space.create('memtx', {engine='memtx'})
> -_ = box.space.memtx:create_index('pk')
> -box.space.memtx:insert{1, 'memtx'}
> -_ = box.schema.space.create('vinyl', {engine='vinyl'})
> -_ = box.space.vinyl:create_index('pk')
> -box.space.vinyl:insert{1, 'vinyl'}
> -_ = box.schema.space.create('test')
> -
> -test_run:cmd("setopt delimiter ';'")
> ---
> --- Test DDL object creation and deletion should leave no
> --- effects after rollback
> ---
> -box.begin()
> -box.space.test:create_index('pk')
> -box.rollback();
> -box.space.test.index.pk;
> ---
> ---
> -_ = box.space.test:create_index('pk');
> -box.space.test:insert{1}
> -
> -box.begin()
> -box.space.test:truncate()
> -box.rollback();
> -box.space.test:select{};
> ---
> ---
> --- DDL followed by a select from memtx space. Such
> --- a select doesn't yield.
> ---
> -box.begin()
> -box.space.test:truncate()
> -box.space.memtx:select{}
> -box.commit();
> -
> --- DDL and select from a vinyl space. Multi-engine transaction
> --- is not allowed.
> -box.begin()
> -box.space.test:truncate()
> -box.space.vinyl:select{}
> -
> --- A transaction is left open due to an exception in the Lua fragment
> -box.rollback();
> -
> --- DDL as a second statement - doesn't work
> -box.begin()
> -box.space.memtx:insert{2, 'truncate'}
> -box.space.test:truncate();
> -
> --- A transaction is left open due to an exception in the Lua fragment
> -box.rollback();
> -
> -box.space.memtx:select{};
> -
> --- DML as a second statement - works if the engine is the same
> -box.begin()
> -box.space.test:truncate()
> -box.space.memtx:insert{2, 'truncate'}
> -box.commit();
> -
> -box.space.memtx:select{};
> -
> --- DML as a second statement - works if the engine is the same
> -box.begin()
> -box.space.test:truncate()
> -box.space.vinyl:insert{2, 'truncate'};
> -
> --- A transaction is left open due to an exception in the above fragment
> -box.rollback();
> -
> -box.space.vinyl:select{};
> -
> --- Two DDL satements in a row
> -box.begin()
> -box.space.test:truncate()
> -box.space.test:truncate();
> -
> --- A transaction is left open due to an exception in the above fragment
> -box.rollback();
> -
> --- Two DDL stateemnts on different engines
> -box.begin()
> -box.space.memtx:truncate()
> -box.space.vinyl:truncate();
> -
> -box.rollback();
> -
> -box.space.memtx:select{};
> -box.space.vinyl:select{};
> -
> --- cleanup
> -test_run:cmd("setopt delimiter ''");
> -
> -if box.space.test then box.space.test:drop() end
> -box.space.memtx:drop()
> -box.space.vinyl:drop()
> -
> -- 
> 2.20.1
> 



More information about the Tarantool-patches mailing list