[PATCH 5/5] Allow to execute non-yielding DDL statements in transactions
Konstantin Osipov
kostja at tarantool.org
Mon Jul 8 11:21:16 MSK 2019
* Vladimir Davydov <vdavydov.dev at gmail.com> [19/07/08 11:14]:
> On Sat, Jul 06, 2019 at 01:56:35AM +0300, Konstantin Osipov wrote:
> > * Vladimir Davydov <vdavydov.dev at gmail.com> [19/07/05 23:27]:
> >
> > Please work on a test case which not only ensures the statements
> > are allowed, but also produce desired results - as well as leave
> > no traces/partial effects on rollback.
>
> As a matter of fact, this simple test does check that rollback doesn't
> leave any traces - if it did, an attempt to commit the same statements
> would fail:
>
> box.begin() create() box.rollback() -- suppose it leaved some traces
> box.begin() create() box.commit() -- then this would fail
>
> It also checks that the DDL operations produce the desired results,
> otherwise an attempt to drop created objects would fail:
>
> box.begin() create() box.commit() -- suppose it didn't create some objects
> box.begin() drop() box.commit() -- then this would fail
In any case you test a fixed number of combinations, and should
come up with a randomized test. This feature encompasses all DDL
operators, including:
- roles
- users
- functions
- SQL triggers
- SQL foreign key constraints
- SQL views
- SQL check constraints
Every object should be involved in the test, and the generated
transactions should be random.
--
Konstantin Osipov, Moscow, Russia
https://scylladb.com
More information about the Tarantool-patches
mailing list