[Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test

Oleg Piskunov o.piskunov at tarantool.org
Fri Mar 20 11:40:40 MSK 2020


LGTM.

Was confused that you work with different tests in one branch resulting my review messed up.
  
>Четверг, 19 марта 2020, 16:50 +03:00 от Alexander Tikhonov <avtikhon at tarantool.org>:
> 
>
>Hi, Oleg, I’ve rechecked all the tests and didn’t find any used way to cleanup the fibers at the tests finish. I’ll suggest to discuss it in the future changes, but not mess with the current tests splitting.
>  
>>Среда, 18 марта 2020, 15:06 +03:00 от Oleg Piskunov < o.piskunov at tarantool.org >:
>> 
>>
>>Hi,
>> 
>>Sasha, need to cleanup fibers in next tests:
>> 
>>test/box/ddl_parallel.test.lua 
>>test/box/ddl_tuple.test.lua
>>test/box/gh-2336-ddl_call_twice.test.lua 
>>test/box/gh-2783-ddl_lock.test.lua
>>test/box/gh-928-ddl_truncate.test.lua
>Not needed in the current patch.
>> 
>>Unused fibers in next tests:
>> 
>>test/box/gh-822_net.box.test.lua 
>> 
>Was already removed in V2, please check if you mentioned correct test.
>> 
>>>Среда, 18 марта 2020, 13:37 +03:00 от Alexander V. Tikhonov < avtikhon at tarantool.org >:
>>> 
>>>Divided into tests:
>>>- box/ddl_alter.test.lua
>>>- box/ddl_collation.test.lua
>>>- box/ddl_collation_types.test.lua
>>>- box/ddl_collation_wrong_id.test.lua
>>>- box/ddl_no_collation.test.lua
>>>- box/ddl_parallel.test.lua
>>>- box/ddl_tuple.test.lua
>>>- box/gh-2336-ddl_call_twice.test.lua
>>>- box/gh-2783-ddl_lock.test.lua
>>>- box/gh-2839-ddl_custom_fields.test.lua
>>>- box/gh-2937-ddl_collation_field_def.test.lua
>>>- box/gh-3290-ddl_collation_deleted.test.lua
>>>- box/gh-928-ddl_truncate.test.lua
>>>---
>>>
>>>Github:  https://github.com/tarantool/tarantool/tree/avtikhon/divide_tests
>>>
>>> test/box/ddl.result | 1210 -----------------
>>> test/box/ddl.test.lua | 272 ----
>>> test/box/ddl_alter.result | 30 +
>>> test/box/ddl_alter.test.lua | 9 +
>>> test/box/ddl_collation.result | 853 ++++++++++++
>>> test/box/ddl_collation.test.lua | 90 ++
>>> test/box/ddl_collation_types.result | 21 +
>>> test/box/ddl_collation_types.test.lua | 6 +
>>> test/box/ddl_collation_wrong_id.result | 21 +
>>> test/box/ddl_collation_wrong_id.test.lua | 7 +
>>> test/box/ddl_no_collation.result | 12 +
>>> test/box/ddl_no_collation.test.lua | 4 +
>>> test/box/ddl_parallel.result | 61 +
>>> test/box/ddl_parallel.test.lua | 30 +
>>> test/box/ddl_tuple.result | 67 +
>>> test/box/ddl_tuple.test.lua | 28 +
>>> test/box/gh-2336-ddl_call_twice.result | 44 +
>>> test/box/gh-2336-ddl_call_twice.test.lua | 16 +
>>> test/box/gh-2783-ddl_lock.result | 62 +
>>> test/box/gh-2783-ddl_lock.test.lua | 33 +
>>> test/box/gh-2839-ddl_custom_fields.result | 26 +
>>> test/box/gh-2839-ddl_custom_fields.test.lua | 10 +
>>> .../gh-2937-ddl_collation_field_def.result | 27 +
>>> .../gh-2937-ddl_collation_field_def.test.lua | 10 +
>>> test/box/gh-3290-ddl_collation_deleted.result | 16 +
>>> .../gh-3290-ddl_collation_deleted.test.lua | 7 +
>>> test/box/gh-928-ddl_truncate.result | 35 +
>>> test/box/gh-928-ddl_truncate.test.lua | 14 +
>>> 28 files changed, 1539 insertions(+), 1482 deletions(-)
>>> delete mode 100644 test/box/ddl.result
>>> delete mode 100644 test/box/ddl.test.lua
>>> create mode 100644 test/box/ddl_alter.result
>>> create mode 100644 test/box/ddl_alter.test.lua
>>> create mode 100644 test/box/ddl_collation.result
>>> create mode 100644 test/box/ddl_collation.test.lua
>>> create mode 100644 test/box/ddl_collation_types.result
>>> create mode 100644 test/box/ddl_collation_types.test.lua
>>> create mode 100644 test/box/ddl_collation_wrong_id.result
>>> create mode 100644 test/box/ddl_collation_wrong_id.test.lua
>>> create mode 100644 test/box/ddl_no_collation.result
>>> create mode 100644 test/box/ddl_no_collation.test.lua
>>> create mode 100644 test/box/ddl_parallel.result
>>> create mode 100644 test/box/ddl_parallel.test.lua
>>> create mode 100644 test/box/ddl_tuple.result
>>> create mode 100644 test/box/ddl_tuple.test.lua
>>> create mode 100644 test/box/gh-2336-ddl_call_twice.result
>>> create mode 100644 test/box/gh-2336-ddl_call_twice.test.lua
>>> create mode 100644 test/box/gh-2783-ddl_lock.result
>>> create mode 100644 test/box/gh-2783-ddl_lock.test.lua
>>> create mode 100644 test/box/gh-2839-ddl_custom_fields.result
>>> create mode 100644 test/box/gh-2839-ddl_custom_fields.test.lua
>>> create mode 100644 test/box/gh-2937-ddl_collation_field_def.result
>>> create mode 100644 test/box/gh-2937-ddl_collation_field_def.test.lua
>>> create mode 100644 test/box/gh-3290-ddl_collation_deleted.result
>>> create mode 100644 test/box/gh-3290-ddl_collation_deleted.test.lua
>>> create mode 100644 test/box/gh-928-ddl_truncate.result
>>> create mode 100644 test/box/gh-928-ddl_truncate.test.lua
>>>
>>>diff --git a/test/box/ddl.result b/test/box/ddl.result
>>>deleted file mode 100644
>>>index b995b1493..000000000
>>>--- a/test/box/ddl.result
>>>+++ /dev/null
>>>@@ -1,1210 +0,0 @@
>>>-env = require('test_run')
>>>----
>>>-...
>>>-test_run = env.new()
>>>----
>>>-...
>>>-fiber = require'fiber'
>>>----
>>>-...
>>>--- simple test for parallel ddl execution
>>>-_ = box.schema.space.create('test'):create_index('pk')
>>>----
>>>-...
>>>-ch = fiber.channel(2)
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ';'")
>>>----
>>>-- true
>>>-...
>>>-function f1()
>>>- box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>- ch:put(true)
>>>-end;
>>>----
>>>-...
>>>-function f2()
>>>- box.space.test:create_index('third', {parts = {3, 'string'}})
>>>- ch:put(true)
>>>-end;
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ''");
>>>----
>>>-- true
>>>-...
>>>-_ = {fiber.create(f1), fiber.create(f2)}
>>>----
>>>-...
>>>-ch:get()
>>>----
>>>-- true
>>>-...
>>>-ch:get()
>>>----
>>>-- true
>>>-...
>>>-_ = box.space.test:drop()
>>>----
>>>-...
>>>-test_run:cmd('restart server default')
>>>-env = require('test_run')
>>>----
>>>-...
>>>-test_run = env.new()
>>>----
>>>-...
>>>-fiber = require'fiber'
>>>----
>>>-...
>>>-ch = fiber.channel(2)
>>>----
>>>-...
>>>---issue #928
>>>-space = box.schema.space.create('test_trunc')
>>>----
>>>-...
>>>-_ = space:create_index('pk')
>>>----
>>>-...
>>>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
>>>----
>>>-...
>>>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
>>>----
>>>-...
>>>-function test_trunc() space:truncate() ch:put(true) end
>>>----
>>>-...
>>>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
>>>----
>>>-...
>>>-_ = {ch:get(), ch:get()}
>>>----
>>>-...
>>>-space:drop()
>>>----
>>>-...
>>>--- index should not crash after alter
>>>-space = box.schema.space.create('test_swap')
>>>----
>>>-...
>>>-index = space:create_index('pk')
>>>----
>>>-...
>>>-space:replace({1, 2, 3})
>>>----
>>>-- [1, 2, 3]
>>>-...
>>>-index:rename('primary')
>>>----
>>>-...
>>>-index2 = space:create_index('sec')
>>>----
>>>-...
>>>-space:replace({2, 3, 1})
>>>----
>>>-- [2, 3, 1]
>>>-...
>>>-space:select()
>>>----
>>>-- - [1, 2, 3]
>>>- - [2, 3, 1]
>>>-...
>>>-space:drop()
>>>----
>>>-...
>>>-ch = fiber.channel(3)
>>>----
>>>-...
>>>-_ = box.schema.space.create('test'):create_index('pk')
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ';'")
>>>----
>>>-- true
>>>-...
>>>-function add_index()
>>>- box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>- ch:put(true)
>>>-end;
>>>----
>>>-...
>>>-function insert_tuple(tuple)
>>>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)})
>>>-end;
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ''");
>>>----
>>>-- true
>>>-...
>>>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})}
>>>----
>>>-...
>>>-{ch:get(), ch:get(), ch:get()}
>>>----
>>>-- - - false
>>>- - 'Tuple field 2 type does not match one required by operation: expected unsigned'
>>>- - - true
>>>- - [1, 2, 'a']
>>>- - true
>>>-...
>>>-box.space.test:select()
>>>----
>>>-- - [1, 2, 'a']
>>>-...
>>>-test_run:cmd('restart server default')
>>>-box.space.test:select()
>>>----
>>>-- - [1, 2, 'a']
>>>-...
>>>-box.space.test:drop()
>>>----
>>>-...
>>>--- gh-2336 crash if format called twice during snapshot
>>>-fiber = require'fiber'
>>>----
>>>-...
>>>-space = box.schema.space.create('test_format')
>>>----
>>>-...
>>>-_ = space:create_index('pk', { parts = { 1,'str' }})
>>>----
>>>-...
>>>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }})
>>>----
>>>-...
>>>-str = string.rep("t",1024)
>>>----
>>>-...
>>>-for i = 1, 10000 do space:insert{tostring(i), str} end
>>>----
>>>-...
>>>-ch = fiber.channel(3)
>>>----
>>>-...
>>>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end)
>>>----
>>>-...
>>>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}}
>>>----
>>>-...
>>>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end
>>>----
>>>-...
>>>-{ch:get(), ch:get(), ch:get()}
>>>----
>>>-- - true
>>>- - true
>>>- - true
>>>-...
>>>-space:drop()
>>>----
>>>-...
>>>--- collation
>>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>----
>>>-...
>>>-box.internal.collation.create('test')
>>>----
>>>-- error: Illegal parameters, type (second arg) must be a string
>>>-...
>>>-box.internal.collation.create('test', 'ICU')
>>>----
>>>-- error: Illegal parameters, locale (third arg) must be a string
>>>-...
>>>-box.internal.collation.create(42, 'ICU', 'ru_RU')
>>>----
>>>-- error: Illegal parameters, name (first arg) must be a string
>>>-...
>>>-box.internal.collation.create('test', 42, 'ru_RU')
>>>----
>>>-- error: Illegal parameters, type (second arg) must be a string
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 42)
>>>----
>>>-- error: Illegal parameters, locale (third arg) must be a string
>>>-...
>>>-box.internal.collation.create('test', 'nothing', 'ru_RU')
>>>----
>>>-- error: 'Failed to initialize collation: unknown collation type.'
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok
>>>----
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>----
>>>-- error: Duplicate key exists in unique index 'name' in space '_collation'
>>>-...
>>>-box.internal.collation.drop('test')
>>>----
>>>-...
>>>-box.internal.collation.drop('nothing') -- allowed
>>>----
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42)
>>>----
>>>-- error: Illegal parameters, options (fourth arg) must be a table or nil
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options')
>>>----
>>>-- error: Illegal parameters, options (fourth arg) must be a table or nil
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'})
>>>----
>>>-- error: 'Wrong collation options (field 5): unexpected option ''ping'''
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'})
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong french_collation option setting,
>>>- expected ON | OFF.'
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok
>>>----
>>>-...
>>>-box.internal.collation.drop('test') --ok
>>>----
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'})
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong strength option setting, expected
>>>- PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.'
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42})
>>>----
>>>-- error: 'Wrong collation options (field 5): ''strength'' must be enum'
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok
>>>----
>>>-- error: 'Wrong collation options (field 5): ''strength'' must be enum'
>>>-...
>>>-box.internal.collation.drop('test') --ok
>>>----
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok
>>>----
>>>-...
>>>-box.internal.collation.drop('test') --ok
>>>----
>>>-...
>>>-c = box.space._collation:get{1}:totable()
>>>----
>>>-...
>>>-c[2] = 'unicode_test'
>>>----
>>>-...
>>>-box.space._collation:replace(c)
>>>----
>>>-- error: collation does not support alter
>>>-...
>>>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback()
>>>----
>>>-...
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>----
>>>-...
>>>-box.internal.collation.exists('test')
>>>----
>>>-- true
>>>-...
>>>-test_run:cmd('restart server default')
>>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>----
>>>-...
>>>-box.internal.collation.exists('test')
>>>----
>>>-- true
>>>-...
>>>-box.internal.collation.drop('test')
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test'}
>>>----
>>>-- error: Tuple field 3 required by space format is missing
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU'}
>>>----
>>>-- error: Tuple field 5 required by space format is missing
>>>-...
>>>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'}
>>>----
>>>-- error: 'Tuple field 3 type does not match one required by operation: expected unsigned'
>>>-...
>>>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'}
>>>----
>>>-- error: 'Tuple field 2 type does not match one required by operation: expected string'
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'}
>>>----
>>>-- error: 'Tuple field 4 type does not match one required by operation: expected string'
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 42}
>>>----
>>>-- error: 'Tuple field 5 type does not match one required by operation: expected string'
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok
>>>----
>>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>----
>>>-- error: Duplicate key exists in unique index 'name' in space '_collation'
>>>-...
>>>-box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>-box.space._collation.index.name:delete{'nothing'} -- allowed
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42}
>>>----
>>>-- error: 'Tuple field 6 type does not match one required by operation: expected map'
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'}
>>>----
>>>-- error: 'Tuple field 6 type does not match one required by operation: expected map'
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}}
>>>----
>>>-- error: 'Wrong collation options (field 5): unexpected option ''ping'''
>>>-...
>>>-opts = {normalization_mode='NORMAL'}
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong normalization_mode option setting,
>>>- expected ON | OFF.'
>>>-...
>>>-opts.normalization_mode = 'OFF'
>>>----
>>>-...
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok
>>>----
>>>-...
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-...
>>>-opts.numeric_collation = 'PERL'
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong numeric_collation option setting,
>>>- expected ON | OFF.'
>>>-...
>>>-opts.numeric_collation = 'ON'
>>>----
>>>-...
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>----
>>>-...
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-...
>>>-opts.alternate_handling1 = 'ON'
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1'''
>>>-...
>>>-opts.alternate_handling1 = nil
>>>----
>>>-...
>>>-opts.alternate_handling = 'ON'
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong alternate_handling option setting,
>>>- expected NON_IGNORABLE | SHIFTED.'
>>>-...
>>>-opts.alternate_handling = 'SHIFTED'
>>>----
>>>-...
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>----
>>>-...
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-...
>>>-opts.case_first = 'ON'
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong case_first option setting, expected
>>>- OFF | UPPER_FIRST | LOWER_FIRST.'
>>>-...
>>>-opts.case_first = 'OFF'
>>>----
>>>-...
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>----
>>>-...
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-...
>>>-opts.case_level = 'UPPER'
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected
>>>- ON | OFF.'
>>>-...
>>>-opts.case_level = 'DEFAULT'
>>>----
>>>-...
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>----
>>>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected
>>>- ON | OFF.'
>>>-...
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>----
>>>-...
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>----
>>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>-box.space._collation:select{}
>>>----
>>>-- - [0, 'none', 1, 'BINARY', '', {}]
>>>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}]
>>>- - [3, 'binary', 1, 'BINARY', '', {}]
>>>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}]
>>>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}]
>>>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}]
>>>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}]
>>>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}]
>>>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}]
>>>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}]
>>>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}]
>>>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}]
>>>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}]
>>>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}]
>>>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}]
>>>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}]
>>>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}]
>>>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}]
>>>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}]
>>>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}]
>>>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}]
>>>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}]
>>>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}]
>>>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}]
>>>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}]
>>>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}]
>>>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}]
>>>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}]
>>>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}]
>>>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}]
>>>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}]
>>>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}]
>>>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}]
>>>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}]
>>>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}]
>>>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}]
>>>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}]
>>>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}]
>>>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}]
>>>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}]
>>>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}]
>>>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}]
>>>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}]
>>>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}]
>>>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}]
>>>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}]
>>>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}]
>>>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}]
>>>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}]
>>>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}]
>>>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}]
>>>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}]
>>>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}]
>>>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}]
>>>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}]
>>>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}]
>>>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}]
>>>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}]
>>>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}]
>>>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}]
>>>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}]
>>>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}]
>>>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}]
>>>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}]
>>>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}]
>>>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}]
>>>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}]
>>>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}]
>>>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}]
>>>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}]
>>>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}]
>>>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}]
>>>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}]
>>>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}]
>>>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}]
>>>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}]
>>>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}]
>>>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}]
>>>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}]
>>>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}]
>>>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}]
>>>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}]
>>>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}]
>>>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}]
>>>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}]
>>>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}]
>>>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}]
>>>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}]
>>>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}]
>>>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}]
>>>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}]
>>>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}]
>>>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}]
>>>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}]
>>>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}]
>>>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}]
>>>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}]
>>>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}]
>>>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}]
>>>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}]
>>>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}]
>>>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}]
>>>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}]
>>>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}]
>>>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}]
>>>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}]
>>>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}]
>>>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}]
>>>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}]
>>>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}]
>>>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}]
>>>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}]
>>>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}]
>>>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}]
>>>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}]
>>>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}]
>>>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}]
>>>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}]
>>>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}]
>>>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}]
>>>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}]
>>>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}]
>>>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}]
>>>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}]
>>>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}]
>>>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}]
>>>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}]
>>>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}]
>>>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}]
>>>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}]
>>>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}]
>>>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}]
>>>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}]
>>>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}]
>>>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}]
>>>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}]
>>>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}]
>>>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}]
>>>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}]
>>>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}]
>>>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}]
>>>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}]
>>>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}]
>>>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}]
>>>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}]
>>>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}]
>>>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}]
>>>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}]
>>>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}]
>>>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}]
>>>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}]
>>>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}]
>>>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}]
>>>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}]
>>>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}]
>>>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}]
>>>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}]
>>>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}]
>>>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}]
>>>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}]
>>>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}]
>>>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}]
>>>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}]
>>>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}]
>>>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}]
>>>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}]
>>>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}]
>>>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}]
>>>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}]
>>>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}]
>>>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}]
>>>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}]
>>>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}]
>>>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}]
>>>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}]
>>>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}]
>>>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}]
>>>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}]
>>>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}]
>>>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}]
>>>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}]
>>>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}]
>>>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}]
>>>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}]
>>>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}]
>>>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}]
>>>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}]
>>>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}]
>>>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}]
>>>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}]
>>>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}]
>>>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}]
>>>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}]
>>>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}]
>>>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}]
>>>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}]
>>>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}]
>>>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}]
>>>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}]
>>>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}]
>>>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}]
>>>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}]
>>>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}]
>>>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}]
>>>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}]
>>>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}]
>>>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}]
>>>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}]
>>>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}]
>>>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}]
>>>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}]
>>>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}]
>>>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}]
>>>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}]
>>>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}]
>>>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}]
>>>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}]
>>>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}]
>>>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}]
>>>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}]
>>>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}]
>>>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}]
>>>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}]
>>>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}]
>>>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}]
>>>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}]
>>>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}]
>>>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}]
>>>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}]
>>>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}]
>>>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}]
>>>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}]
>>>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}]
>>>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}]
>>>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}]
>>>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}]
>>>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}]
>>>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}]
>>>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}]
>>>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}]
>>>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}]
>>>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}]
>>>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}]
>>>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}]
>>>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}]
>>>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}]
>>>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}]
>>>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}]
>>>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}]
>>>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}]
>>>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}]
>>>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}]
>>>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}]
>>>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}]
>>>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}]
>>>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}]
>>>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}]
>>>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}]
>>>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}]
>>>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}]
>>>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}]
>>>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}]
>>>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}]
>>>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}]
>>>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}]
>>>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}]
>>>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}]
>>>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}]
>>>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}]
>>>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}]
>>>- - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>-test_run:cmd('restart server default')
>>>-box.space._collation:select{}
>>>----
>>>-- - [0, 'none', 1, 'BINARY', '', {}]
>>>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}]
>>>- - [3, 'binary', 1, 'BINARY', '', {}]
>>>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}]
>>>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}]
>>>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}]
>>>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}]
>>>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}]
>>>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}]
>>>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}]
>>>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}]
>>>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}]
>>>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}]
>>>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}]
>>>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}]
>>>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}]
>>>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}]
>>>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}]
>>>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}]
>>>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}]
>>>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}]
>>>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}]
>>>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}]
>>>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}]
>>>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}]
>>>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}]
>>>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}]
>>>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}]
>>>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}]
>>>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}]
>>>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}]
>>>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}]
>>>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}]
>>>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}]
>>>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}]
>>>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}]
>>>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}]
>>>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}]
>>>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}]
>>>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}]
>>>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}]
>>>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}]
>>>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}]
>>>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}]
>>>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}]
>>>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}]
>>>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}]
>>>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}]
>>>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}]
>>>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}]
>>>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}]
>>>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}]
>>>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}]
>>>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}]
>>>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}]
>>>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}]
>>>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}]
>>>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}]
>>>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}]
>>>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}]
>>>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}]
>>>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}]
>>>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}]
>>>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}]
>>>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}]
>>>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}]
>>>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}]
>>>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}]
>>>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}]
>>>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}]
>>>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}]
>>>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}]
>>>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}]
>>>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}]
>>>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}]
>>>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}]
>>>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}]
>>>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}]
>>>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}]
>>>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}]
>>>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}]
>>>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}]
>>>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}]
>>>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}]
>>>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}]
>>>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}]
>>>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}]
>>>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}]
>>>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}]
>>>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}]
>>>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}]
>>>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}]
>>>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}]
>>>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}]
>>>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}]
>>>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}]
>>>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}]
>>>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}]
>>>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}]
>>>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}]
>>>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}]
>>>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}]
>>>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}]
>>>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}]
>>>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}]
>>>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}]
>>>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}]
>>>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}]
>>>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}]
>>>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}]
>>>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}]
>>>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}]
>>>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}]
>>>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}]
>>>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}]
>>>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}]
>>>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}]
>>>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}]
>>>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}]
>>>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}]
>>>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}]
>>>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}]
>>>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}]
>>>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}]
>>>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}]
>>>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}]
>>>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}]
>>>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}]
>>>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}]
>>>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}]
>>>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}]
>>>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}]
>>>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}]
>>>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}]
>>>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}]
>>>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}]
>>>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}]
>>>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}]
>>>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}]
>>>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}]
>>>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}]
>>>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}]
>>>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}]
>>>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}]
>>>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}]
>>>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}]
>>>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}]
>>>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}]
>>>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}]
>>>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}]
>>>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}]
>>>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}]
>>>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}]
>>>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}]
>>>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}]
>>>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}]
>>>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}]
>>>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}]
>>>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}]
>>>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}]
>>>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}]
>>>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}]
>>>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}]
>>>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}]
>>>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}]
>>>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}]
>>>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}]
>>>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}]
>>>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}]
>>>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}]
>>>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}]
>>>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}]
>>>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}]
>>>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}]
>>>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}]
>>>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}]
>>>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}]
>>>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}]
>>>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}]
>>>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}]
>>>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}]
>>>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}]
>>>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}]
>>>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}]
>>>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}]
>>>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}]
>>>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}]
>>>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}]
>>>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}]
>>>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}]
>>>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}]
>>>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}]
>>>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}]
>>>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}]
>>>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}]
>>>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}]
>>>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}]
>>>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}]
>>>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}]
>>>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}]
>>>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}]
>>>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}]
>>>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}]
>>>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}]
>>>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}]
>>>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}]
>>>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}]
>>>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}]
>>>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}]
>>>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}]
>>>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}]
>>>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}]
>>>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}]
>>>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}]
>>>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}]
>>>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}]
>>>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}]
>>>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}]
>>>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}]
>>>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}]
>>>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}]
>>>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}]
>>>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}]
>>>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}]
>>>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}]
>>>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}]
>>>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}]
>>>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}]
>>>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}]
>>>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}]
>>>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}]
>>>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}]
>>>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}]
>>>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}]
>>>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}]
>>>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}]
>>>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}]
>>>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}]
>>>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}]
>>>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}]
>>>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}]
>>>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}]
>>>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}]
>>>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}]
>>>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}]
>>>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}]
>>>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}]
>>>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}]
>>>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}]
>>>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}]
>>>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}]
>>>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}]
>>>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}]
>>>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}]
>>>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}]
>>>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}]
>>>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}]
>>>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}]
>>>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}]
>>>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}]
>>>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}]
>>>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}]
>>>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}]
>>>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}]
>>>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}]
>>>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}]
>>>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}]
>>>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}]
>>>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}]
>>>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}]
>>>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}]
>>>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}]
>>>- - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>-box.space._collation.index.name:delete{'test'}
>>>----
>>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>-...
>>>---
>>>--- gh-3290: expose ICU into Lua. It uses built-in collations, that
>>>--- must work even if a collation is deleted from _collation.
>>>---
>>>-t = box.space._collation:delete{1}
>>>----
>>>-...
>>>-utf8.cmp('abc', 'def')
>>>----
>>>-- -1
>>>-...
>>>-box.space._collation:replace(t)
>>>----
>>>-- [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>-...
>>>---
>>>--- gh-2839: allow to store custom fields in field definition.
>>>---
>>>-format = {}
>>>----
>>>-...
>>>-format[1] = {name = 'field1', type = 'unsigned'}
>>>----
>>>-...
>>>-format[2] = {'field2', 'unsigned'}
>>>----
>>>-...
>>>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'}
>>>----
>>>-...
>>>-s = box.schema.create_space('test', {format = format})
>>>----
>>>-...
>>>-s:format()[3].custom_field
>>>----
>>>-- custom_value
>>>-...
>>>-s:drop()
>>>----
>>>-...
>>>---
>>>--- gh-2937: allow to specify collation in field definition.
>>>---
>>>-format = {}
>>>----
>>>-...
>>>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'}
>>>----
>>>-...
>>>-format[2] = {'field2', 'any', collation = 'unicode_ci'}
>>>----
>>>-...
>>>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'}
>>>----
>>>-...
>>>-s = box.schema.create_space('test', {format = format})
>>>----
>>>-...
>>>-s:format()
>>>----
>>>-- [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2',
>>>- 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}]
>>>-...
>>>-s:drop()
>>>----
>>>-...
>>>--- Check that collation is allowed only for stings, scalar and any types.
>>>-format = {}
>>>----
>>>-...
>>>-format[1] = {'field1', 'unsigned', collation = 'unicode'}
>>>----
>>>-...
>>>-s = box.schema.create_space('test', {format = format})
>>>----
>>>-- error: 'Failed to create space ''test'': collation is reasonable only for string,
>>>- scalar and any fields'
>>>-...
>>>-format[1] = {'field2', 'array', collation = 'unicode_ci'}
>>>----
>>>-...
>>>-s = box.schema.create_space('test', {format = format})
>>>----
>>>-- error: 'Failed to create space ''test'': collation is reasonable only for string,
>>>- scalar and any fields'
>>>-...
>>>--- Check that error is raised when collation doesn't exists.
>>>-format = {}
>>>----
>>>-...
>>>-format[1] = {'field1', 'unsigend', collation = 'test_coll'}
>>>----
>>>-...
>>>-s = box.schema.create_space('test', {format = format})
>>>----
>>>-- error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll'''
>>>-...
>>>--- Check that error is raised when collation with wrong id is used.
>>>-_space = box.space[box.schema.SPACE_ID]
>>>----
>>>-...
>>>-utils = require('utils')
>>>----
>>>-...
>>>-EMPTY_MAP = utils.setmap({})
>>>----
>>>-...
>>>-format = {{name = 'field1', type = 'string', collation = 666}}
>>>----
>>>-...
>>>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format}
>>>----
>>>-...
>>>-_space:insert(surrogate_space)
>>>----
>>>-- error: 'Wrong collation options (field 1): collation was not found by ID'
>>>-...
>>>---
>>>--- gh-2783
>>>--- A ddl operation shoud fail before trying to lock a ddl latch
>>>--- in a multi-statement transaction.
>>>--- If operation tries to lock already an locked latch then the
>>>--- current transaction will be silently rolled back under our feet.
>>>--- This is confusing. So check for multi-statement transaction
>>>--- before locking the latch.
>>>---
>>>-test_latch = box.schema.space.create('test_latch')
>>>----
>>>-...
>>>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}})
>>>----
>>>-...
>>>-fiber = require('fiber')
>>>----
>>>-...
>>>-c = fiber.channel(1)
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ';'")
>>>----
>>>-- true
>>>-...
>>>-_ = fiber.create(function()
>>>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}})
>>>- c:put(true)
>>>-end);
>>>----
>>>-...
>>>--- Should be Ok for now
>>>-box.begin()
>>>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}})
>>>-box.commit();
>>>----
>>>-...
>>>-test_run:cmd("setopt delimiter ''");
>>>----
>>>-- true
>>>-...
>>>--- Explicitly roll back the transaction in multi-statement,
>>>--- which hasn't finished due to DDL error
>>>-box.rollback()
>>>----
>>>-...
>>>-_ = c:get()
>>>----
>>>-...
>>>-test_latch:drop() -- this is where everything stops
>>>----
>>>-...
>>>diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua
>>>deleted file mode 100644
>>>index 101bc6f9b..000000000
>>>--- a/test/box/ddl.test.lua
>>>+++ /dev/null
>>>@@ -1,272 +0,0 @@
>>>-env = require('test_run')
>>>-test_run = env.new()
>>>-
>>>-fiber = require'fiber'
>>>-
>>>--- simple test for parallel ddl execution
>>>-_ = box.schema.space.create('test'):create_index('pk')
>>>-
>>>-ch = fiber.channel(2)
>>>-
>>>-test_run:cmd("setopt delimiter ';'")
>>>-
>>>-function f1()
>>>- box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>- ch:put(true)
>>>-end;
>>>-
>>>-function f2()
>>>- box.space.test:create_index('third', {parts = {3, 'string'}})
>>>- ch:put(true)
>>>-end;
>>>-
>>>-test_run:cmd("setopt delimiter ''");
>>>-
>>>-_ = {fiber.create(f1), fiber.create(f2)}
>>>-
>>>-ch:get()
>>>-ch:get()
>>>-
>>>-_ = box.space.test:drop()
>>>-
>>>-test_run:cmd('restart server default')
>>>-
>>>-env = require('test_run')
>>>-test_run = env.new()
>>>-fiber = require'fiber'
>>>-
>>>-ch = fiber.channel(2)
>>>-
>>>---issue #928
>>>-space = box.schema.space.create('test_trunc')
>>>-_ = space:create_index('pk')
>>>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
>>>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
>>>-
>>>-function test_trunc() space:truncate() ch:put(true) end
>>>-
>>>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
>>>-_ = {ch:get(), ch:get()}
>>>-space:drop()
>>>-
>>>--- index should not crash after alter
>>>-space = box.schema.space.create('test_swap')
>>>-index = space:create_index('pk')
>>>-space:replace({1, 2, 3})
>>>-index:rename('primary')
>>>-index2 = space:create_index('sec')
>>>-space:replace({2, 3, 1})
>>>-space:select()
>>>-space:drop()
>>>-
>>>-
>>>-ch = fiber.channel(3)
>>>-
>>>-_ = box.schema.space.create('test'):create_index('pk')
>>>-
>>>-test_run:cmd("setopt delimiter ';'")
>>>-function add_index()
>>>- box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>- ch:put(true)
>>>-end;
>>>-
>>>-function insert_tuple(tuple)
>>>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)})
>>>-end;
>>>-test_run:cmd("setopt delimiter ''");
>>>-
>>>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})}
>>>-{ch:get(), ch:get(), ch:get()}
>>>-
>>>-box.space.test:select()
>>>-
>>>-test_run:cmd('restart server default')
>>>-
>>>-box.space.test:select()
>>>-box.space.test:drop()
>>>-
>>>--- gh-2336 crash if format called twice during snapshot
>>>-fiber = require'fiber'
>>>-
>>>-space = box.schema.space.create('test_format')
>>>-_ = space:create_index('pk', { parts = { 1,'str' }})
>>>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }})
>>>-str = string.rep("t",1024)
>>>-for i = 1, 10000 do space:insert{tostring(i), str} end
>>>-ch = fiber.channel(3)
>>>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end)
>>>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}}
>>>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end
>>>-
>>>-{ch:get(), ch:get(), ch:get()}
>>>-
>>>-space:drop()
>>>-
>>>--- collation
>>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>-
>>>-box.internal.collation.create('test')
>>>-box.internal.collation.create('test', 'ICU')
>>>-box.internal.collation.create(42, 'ICU', 'ru_RU')
>>>-box.internal.collation.create('test', 42, 'ru_RU')
>>>-box.internal.collation.create('test', 'ICU', 42)
>>>-box.internal.collation.create('test', 'nothing', 'ru_RU')
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>-box.internal.collation.drop('test')
>>>-box.internal.collation.drop('nothing') -- allowed
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42)
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options')
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'})
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'})
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok
>>>-box.internal.collation.drop('test') --ok
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'})
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42})
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok
>>>-box.internal.collation.drop('test') --ok
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok
>>>-box.internal.collation.drop('test') --ok
>>>-c = box.space._collation:get{1}:totable()
>>>-c[2] = 'unicode_test'
>>>-box.space._collation:replace(c)
>>>-
>>>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback()
>>>-
>>>-box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>-box.internal.collation.exists('test')
>>>-
>>>-test_run:cmd('restart server default')
>>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>-
>>>-box.internal.collation.exists('test')
>>>-box.internal.collation.drop('test')
>>>-
>>>-box.space._collation:auto_increment{'test'}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU'}
>>>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'}
>>>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'}
>>>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 42}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>-box.space._collation.index.name:delete{'test'} -- ok
>>>-box.space._collation.index.name:delete{'nothing'} -- allowed
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}}
>>>-opts = {normalization_mode='NORMAL'}
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.normalization_mode = 'OFF'
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>-opts.numeric_collation = 'PERL'
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.numeric_collation = 'ON'
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>-opts.alternate_handling1 = 'ON'
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.alternate_handling1 = nil
>>>-opts.alternate_handling = 'ON'
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.alternate_handling = 'SHIFTED'
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>-opts.case_first = 'ON'
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.case_first = 'OFF'
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>-opts.case_level = 'UPPER'
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>-opts.case_level = 'DEFAULT'
>>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>-_ = box.space._collation.index.name:delete{'test'} -- ok
>>>-
>>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>-box.space._collation:select{}
>>>-test_run:cmd('restart server default')
>>>-box.space._collation:select{}
>>>-box.space._collation.index.name:delete{'test'}
>>>-
>>>---
>>>--- gh-3290: expose ICU into Lua. It uses built-in collations, that
>>>--- must work even if a collation is deleted from _collation.
>>>---
>>>-t = box.space._collation:delete{1}
>>>-utf8.cmp('abc', 'def')
>>>-box.space._collation:replace(t)
>>>-
>>>---
>>>--- gh-2839: allow to store custom fields in field definition.
>>>---
>>>-format = {}
>>>-format[1] = {name = 'field1', type = 'unsigned'}
>>>-format[2] = {'field2', 'unsigned'}
>>>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'}
>>>-s = box.schema.create_space('test', {format = format})
>>>-s:format()[3].custom_field
>>>-s:drop()
>>>-
>>>---
>>>--- gh-2937: allow to specify collation in field definition.
>>>---
>>>-format = {}
>>>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'}
>>>-format[2] = {'field2', 'any', collation = 'unicode_ci'}
>>>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'}
>>>-s = box.schema.create_space('test', {format = format})
>>>-s:format()
>>>-s:drop()
>>>-
>>>--- Check that collation is allowed only for stings, scalar and any types.
>>>-format = {}
>>>-format[1] = {'field1', 'unsigned', collation = 'unicode'}
>>>-s = box.schema.create_space('test', {format = format})
>>>-format[1] = {'field2', 'array', collation = 'unicode_ci'}
>>>-s = box.schema.create_space('test', {format = format})
>>>-
>>>--- Check that error is raised when collation doesn't exists.
>>>-format = {}
>>>-format[1] = {'field1', 'unsigend', collation = 'test_coll'}
>>>-s = box.schema.create_space('test', {format = format})
>>>-
>>>--- Check that error is raised when collation with wrong id is used.
>>>-_space = box.space[box.schema.SPACE_ID]
>>>-utils = require('utils')
>>>-EMPTY_MAP = utils.setmap({})
>>>-format = {{name = 'field1', type = 'string', collation = 666}}
>>>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format}
>>>-_space:insert(surrogate_space)
>>>-
>>>---
>>>--- gh-2783
>>>--- A ddl operation shoud fail before trying to lock a ddl latch
>>>--- in a multi-statement transaction.
>>>--- If operation tries to lock already an locked latch then the
>>>--- current transaction will be silently rolled back under our feet.
>>>--- This is confusing. So check for multi-statement transaction
>>>--- before locking the latch.
>>>---
>>>-test_latch = box.schema.space.create('test_latch')
>>>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}})
>>>-fiber = require('fiber')
>>>-c = fiber.channel(1)
>>>-test_run:cmd("setopt delimiter ';'")
>>>-_ = fiber.create(function()
>>>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}})
>>>- c:put(true)
>>>-end);
>>>-
>>>--- Should be Ok for now
>>>-box.begin()
>>>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}})
>>>-box.commit();
>>>-test_run:cmd("setopt delimiter ''");
>>>--- Explicitly roll back the transaction in multi-statement,
>>>--- which hasn't finished due to DDL error
>>>-box.rollback()
>>>-
>>>-_ = c:get()
>>>-test_latch:drop() -- this is where everything stops
>>>diff --git a/test/box/ddl_alter.result b/test/box/ddl_alter.result
>>>new file mode 100644
>>>index 000000000..ce4a6ee69
>>>--- /dev/null
>>>+++ b/test/box/ddl_alter.result
>>>@@ -0,0 +1,30 @@
>>>+-- test-run result file version 2
>>>+-- index should not crash after alter
>>>+space = box.schema.space.create('test_swap')
>>>+ | ---
>>>+ | ...
>>>+index = space:create_index('pk')
>>>+ | ---
>>>+ | ...
>>>+space:replace({1, 2, 3})
>>>+ | ---
>>>+ | - [1, 2, 3]
>>>+ | ...
>>>+index:rename('primary')
>>>+ | ---
>>>+ | ...
>>>+index2 = space:create_index('sec')
>>>+ | ---
>>>+ | ...
>>>+space:replace({2, 3, 1})
>>>+ | ---
>>>+ | - [2, 3, 1]
>>>+ | ...
>>>+space:select()
>>>+ | ---
>>>+ | - - [1, 2, 3]
>>>+ | - [2, 3, 1]
>>>+ | ...
>>>+space:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/ddl_alter.test.lua b/test/box/ddl_alter.test.lua
>>>new file mode 100644
>>>index 000000000..ab0263b78
>>>--- /dev/null
>>>+++ b/test/box/ddl_alter.test.lua
>>>@@ -0,0 +1,9 @@
>>>+-- index should not crash after alter
>>>+space = box.schema.space.create('test_swap')
>>>+index = space:create_index('pk')
>>>+space:replace({1, 2, 3})
>>>+index:rename('primary')
>>>+index2 = space:create_index('sec')
>>>+space:replace({2, 3, 1})
>>>+space:select()
>>>+space:drop()
>>>diff --git a/test/box/ddl_collation.result b/test/box/ddl_collation.result
>>>new file mode 100644
>>>index 000000000..2571ad072
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation.result
>>>@@ -0,0 +1,853 @@
>>>+-- test-run result file version 2
>>>+env = require('test_run')
>>>+ | ---
>>>+ | ...
>>>+test_run = env.new()
>>>+ | ---
>>>+ | ...
>>>+
>>>+-- collation
>>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>+ | ---
>>>+ | ...
>>>+
>>>+box.internal.collation.create('test')
>>>+ | ---
>>>+ | - error: Illegal parameters, type (second arg) must be a string
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU')
>>>+ | ---
>>>+ | - error: Illegal parameters, locale (third arg) must be a string
>>>+ | ...
>>>+box.internal.collation.create(42, 'ICU', 'ru_RU')
>>>+ | ---
>>>+ | - error: Illegal parameters, name (first arg) must be a string
>>>+ | ...
>>>+box.internal.collation.create('test', 42, 'ru_RU')
>>>+ | ---
>>>+ | - error: Illegal parameters, type (second arg) must be a string
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 42)
>>>+ | ---
>>>+ | - error: Illegal parameters, locale (third arg) must be a string
>>>+ | ...
>>>+box.internal.collation.create('test', 'nothing', 'ru_RU')
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: unknown collation type.'
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>+ | ---
>>>+ | - error: Duplicate key exists in unique index 'name' in space '_collation'
>>>+ | ...
>>>+box.internal.collation.drop('test')
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.drop('nothing') -- allowed
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42)
>>>+ | ---
>>>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options')
>>>+ | ---
>>>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'})
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping'''
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'})
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong french_collation option setting,
>>>+ | expected ON | OFF.'
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.drop('test') --ok
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'})
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong strength option setting, expected
>>>+ | PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.'
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42})
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum'
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum'
>>>+ | ...
>>>+box.internal.collation.drop('test') --ok
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.drop('test') --ok
>>>+ | ---
>>>+ | ...
>>>+c = box.space._collation:get{1}:totable()
>>>+ | ---
>>>+ | ...
>>>+c[2] = 'unicode_test'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:replace(c)
>>>+ | ---
>>>+ | - error: collation does not support alter
>>>+ | ...
>>>+
>>>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback()
>>>+ | ---
>>>+ | ...
>>>+
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>+ | ---
>>>+ | ...
>>>+box.internal.collation.exists('test')
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+
>>>+test_run:cmd('restart server default')
>>>+ |
>>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>+ | ---
>>>+ | ...
>>>+
>>>+box.internal.collation.exists('test')
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+box.internal.collation.drop('test')
>>>+ | ---
>>>+ | ...
>>>+
>>>+box.space._collation:auto_increment{'test'}
>>>+ | ---
>>>+ | - error: Tuple field 3 required by space format is missing
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU'}
>>>+ | ---
>>>+ | - error: Tuple field 5 required by space format is missing
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'}
>>>+ | ---
>>>+ | - error: 'Tuple field 3 type does not match one required by operation: expected unsigned'
>>>+ | ...
>>>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'}
>>>+ | ---
>>>+ | - error: 'Tuple field 2 type does not match one required by operation: expected string'
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'}
>>>+ | ---
>>>+ | - error: 'Tuple field 4 type does not match one required by operation: expected string'
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 42}
>>>+ | ---
>>>+ | - error: 'Tuple field 5 type does not match one required by operation: expected string'
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok
>>>+ | ---
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>+ | ---
>>>+ | - error: Duplicate key exists in unique index 'name' in space '_collation'
>>>+ | ...
>>>+box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>+box.space._collation.index.name:delete{'nothing'} -- allowed
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42}
>>>+ | ---
>>>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map'
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'}
>>>+ | ---
>>>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map'
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}}
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping'''
>>>+ | ...
>>>+opts = {normalization_mode='NORMAL'}
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong normalization_mode option setting,
>>>+ | expected ON | OFF.'
>>>+ | ...
>>>+opts.normalization_mode = 'OFF'
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | ...
>>>+opts.numeric_collation = 'PERL'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong numeric_collation option setting,
>>>+ | expected ON | OFF.'
>>>+ | ...
>>>+opts.numeric_collation = 'ON'
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | ...
>>>+opts.alternate_handling1 = 'ON'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1'''
>>>+ | ...
>>>+opts.alternate_handling1 = nil
>>>+ | ---
>>>+ | ...
>>>+opts.alternate_handling = 'ON'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong alternate_handling option setting,
>>>+ | expected NON_IGNORABLE | SHIFTED.'
>>>+ | ...
>>>+opts.alternate_handling = 'SHIFTED'
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | ...
>>>+opts.case_first = 'ON'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong case_first option setting, expected
>>>+ | OFF | UPPER_FIRST | LOWER_FIRST.'
>>>+ | ...
>>>+opts.case_first = 'OFF'
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | ...
>>>+opts.case_level = 'UPPER'
>>>+ | ---
>>>+ | ...
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected
>>>+ | ON | OFF.'
>>>+ | ...
>>>+opts.case_level = 'DEFAULT'
>>>+ | ---
>>>+ | ...
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+ | ---
>>>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected
>>>+ | ON | OFF.'
>>>+ | ...
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+ | ---
>>>+ | ...
>>>+
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>+ | ---
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>+box.space._collation:select{}
>>>+ | ---
>>>+ | - - [0, 'none', 1, 'BINARY', '', {}]
>>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}]
>>>+ | - [3, 'binary', 1, 'BINARY', '', {}]
>>>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}]
>>>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}]
>>>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}]
>>>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}]
>>>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}]
>>>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}]
>>>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}]
>>>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}]
>>>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}]
>>>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}]
>>>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}]
>>>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}]
>>>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}]
>>>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}]
>>>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}]
>>>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}]
>>>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}]
>>>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}]
>>>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}]
>>>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}]
>>>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}]
>>>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}]
>>>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}]
>>>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}]
>>>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}]
>>>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}]
>>>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}]
>>>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}]
>>>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}]
>>>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}]
>>>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}]
>>>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}]
>>>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}]
>>>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}]
>>>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}]
>>>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}]
>>>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}]
>>>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}]
>>>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}]
>>>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}]
>>>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}]
>>>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}]
>>>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}]
>>>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}]
>>>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}]
>>>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}]
>>>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}]
>>>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}]
>>>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}]
>>>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}]
>>>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}]
>>>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}]
>>>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}]
>>>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}]
>>>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}]
>>>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}]
>>>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}]
>>>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}]
>>>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}]
>>>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}]
>>>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}]
>>>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}]
>>>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}]
>>>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}]
>>>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}]
>>>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}]
>>>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}]
>>>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}]
>>>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}]
>>>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}]
>>>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}]
>>>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}]
>>>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}]
>>>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}]
>>>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}]
>>>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}]
>>>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}]
>>>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}]
>>>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}]
>>>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}]
>>>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}]
>>>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}]
>>>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}]
>>>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}]
>>>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}]
>>>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}]
>>>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}]
>>>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}]
>>>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}]
>>>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}]
>>>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}]
>>>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}]
>>>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}]
>>>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}]
>>>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}]
>>>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}]
>>>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}]
>>>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}]
>>>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}]
>>>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}]
>>>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}]
>>>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}]
>>>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}]
>>>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}]
>>>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}]
>>>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}]
>>>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}]
>>>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}]
>>>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}]
>>>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}]
>>>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}]
>>>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}]
>>>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}]
>>>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}]
>>>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}]
>>>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}]
>>>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}]
>>>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}]
>>>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}]
>>>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}]
>>>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}]
>>>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}]
>>>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}]
>>>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}]
>>>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}]
>>>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}]
>>>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}]
>>>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}]
>>>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}]
>>>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}]
>>>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}]
>>>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}]
>>>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}]
>>>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}]
>>>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}]
>>>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}]
>>>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}]
>>>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}]
>>>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}]
>>>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}]
>>>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}]
>>>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}]
>>>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}]
>>>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}]
>>>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}]
>>>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}]
>>>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}]
>>>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}]
>>>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}]
>>>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}]
>>>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}]
>>>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}]
>>>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}]
>>>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}]
>>>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}]
>>>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}]
>>>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}]
>>>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}]
>>>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}]
>>>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}]
>>>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}]
>>>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}]
>>>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}]
>>>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}]
>>>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}]
>>>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}]
>>>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}]
>>>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}]
>>>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}]
>>>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}]
>>>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}]
>>>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}]
>>>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}]
>>>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}]
>>>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}]
>>>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}]
>>>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}]
>>>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}]
>>>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}]
>>>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}]
>>>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}]
>>>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}]
>>>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}]
>>>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}]
>>>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}]
>>>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}]
>>>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}]
>>>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}]
>>>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}]
>>>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}]
>>>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}]
>>>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}]
>>>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}]
>>>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}]
>>>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}]
>>>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}]
>>>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}]
>>>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}]
>>>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}]
>>>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}]
>>>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}]
>>>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}]
>>>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}]
>>>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}]
>>>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}]
>>>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}]
>>>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}]
>>>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}]
>>>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}]
>>>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}]
>>>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}]
>>>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}]
>>>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}]
>>>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}]
>>>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}]
>>>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}]
>>>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}]
>>>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}]
>>>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}]
>>>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}]
>>>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}]
>>>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}]
>>>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}]
>>>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}]
>>>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}]
>>>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}]
>>>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}]
>>>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}]
>>>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}]
>>>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}]
>>>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}]
>>>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}]
>>>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}]
>>>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}]
>>>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}]
>>>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}]
>>>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}]
>>>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}]
>>>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}]
>>>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}]
>>>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}]
>>>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}]
>>>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}]
>>>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}]
>>>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}]
>>>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}]
>>>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}]
>>>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}]
>>>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}]
>>>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}]
>>>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}]
>>>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}]
>>>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}]
>>>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}]
>>>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}]
>>>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}]
>>>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}]
>>>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}]
>>>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}]
>>>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}]
>>>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}]
>>>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}]
>>>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}]
>>>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}]
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>+test_run:cmd('restart server default')
>>>+ |
>>>+box.space._collation:select{}
>>>+ | ---
>>>+ | - - [0, 'none', 1, 'BINARY', '', {}]
>>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}]
>>>+ | - [3, 'binary', 1, 'BINARY', '', {}]
>>>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}]
>>>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}]
>>>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}]
>>>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}]
>>>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}]
>>>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}]
>>>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}]
>>>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}]
>>>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}]
>>>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}]
>>>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}]
>>>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}]
>>>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}]
>>>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}]
>>>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}]
>>>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}]
>>>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}]
>>>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}]
>>>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}]
>>>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}]
>>>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}]
>>>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}]
>>>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}]
>>>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}]
>>>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}]
>>>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}]
>>>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}]
>>>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}]
>>>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}]
>>>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}]
>>>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}]
>>>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}]
>>>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}]
>>>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}]
>>>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}]
>>>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}]
>>>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}]
>>>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}]
>>>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}]
>>>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}]
>>>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}]
>>>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}]
>>>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}]
>>>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}]
>>>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}]
>>>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}]
>>>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}]
>>>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}]
>>>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}]
>>>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}]
>>>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}]
>>>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}]
>>>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}]
>>>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}]
>>>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}]
>>>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}]
>>>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}]
>>>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}]
>>>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}]
>>>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}]
>>>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}]
>>>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}]
>>>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}]
>>>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}]
>>>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}]
>>>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}]
>>>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}]
>>>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}]
>>>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}]
>>>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}]
>>>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}]
>>>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}]
>>>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}]
>>>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}]
>>>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}]
>>>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}]
>>>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}]
>>>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}]
>>>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}]
>>>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}]
>>>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}]
>>>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}]
>>>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}]
>>>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}]
>>>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}]
>>>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}]
>>>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}]
>>>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}]
>>>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}]
>>>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}]
>>>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}]
>>>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}]
>>>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}]
>>>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}]
>>>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}]
>>>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}]
>>>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}]
>>>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}]
>>>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}]
>>>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}]
>>>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}]
>>>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}]
>>>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}]
>>>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}]
>>>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}]
>>>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}]
>>>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}]
>>>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}]
>>>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}]
>>>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}]
>>>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}]
>>>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}]
>>>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}]
>>>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}]
>>>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}]
>>>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}]
>>>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}]
>>>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}]
>>>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}]
>>>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}]
>>>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}]
>>>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}]
>>>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}]
>>>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}]
>>>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}]
>>>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}]
>>>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}]
>>>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}]
>>>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}]
>>>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}]
>>>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}]
>>>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}]
>>>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}]
>>>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}]
>>>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}]
>>>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}]
>>>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}]
>>>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}]
>>>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}]
>>>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}]
>>>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}]
>>>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}]
>>>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}]
>>>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}]
>>>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}]
>>>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}]
>>>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}]
>>>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}]
>>>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}]
>>>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}]
>>>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}]
>>>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}]
>>>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}]
>>>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}]
>>>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}]
>>>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}]
>>>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}]
>>>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}]
>>>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}]
>>>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}]
>>>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}]
>>>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}]
>>>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}]
>>>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}]
>>>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}]
>>>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}]
>>>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}]
>>>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}]
>>>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}]
>>>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}]
>>>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}]
>>>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}]
>>>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}]
>>>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}]
>>>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}]
>>>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}]
>>>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}]
>>>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}]
>>>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}]
>>>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}]
>>>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}]
>>>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}]
>>>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}]
>>>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}]
>>>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}]
>>>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}]
>>>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}]
>>>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}]
>>>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}]
>>>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}]
>>>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}]
>>>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}]
>>>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}]
>>>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}]
>>>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}]
>>>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}]
>>>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}]
>>>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}]
>>>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}]
>>>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}]
>>>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}]
>>>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}]
>>>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}]
>>>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}]
>>>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}]
>>>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}]
>>>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}]
>>>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}]
>>>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}]
>>>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}]
>>>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}]
>>>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}]
>>>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}]
>>>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}]
>>>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}]
>>>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}]
>>>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}]
>>>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}]
>>>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}]
>>>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}]
>>>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}]
>>>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}]
>>>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}]
>>>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}]
>>>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}]
>>>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}]
>>>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}]
>>>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}]
>>>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}]
>>>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}]
>>>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}]
>>>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}]
>>>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}]
>>>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}]
>>>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}]
>>>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}]
>>>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}]
>>>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}]
>>>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}]
>>>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}]
>>>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}]
>>>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}]
>>>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}]
>>>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}]
>>>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}]
>>>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}]
>>>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}]
>>>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}]
>>>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}]
>>>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}]
>>>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}]
>>>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}]
>>>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}]
>>>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}]
>>>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}]
>>>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}]
>>>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}]
>>>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}]
>>>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}]
>>>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}]
>>>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}]
>>>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}]
>>>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}]
>>>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}]
>>>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}]
>>>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}]
>>>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}]
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>+box.space._collation.index.name:delete{'test'}
>>>+ | ---
>>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}]
>>>+ | ...
>>>diff --git a/test/box/ddl_collation.test.lua b/test/box/ddl_collation.test.lua
>>>new file mode 100644
>>>index 000000000..ee26af9c6
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation.test.lua
>>>@@ -0,0 +1,90 @@
>>>+env = require('test_run')
>>>+test_run = env.new()
>>>+
>>>+-- collation
>>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>+
>>>+box.internal.collation.create('test')
>>>+box.internal.collation.create('test', 'ICU')
>>>+box.internal.collation.create(42, 'ICU', 'ru_RU')
>>>+box.internal.collation.create('test', 42, 'ru_RU')
>>>+box.internal.collation.create('test', 'ICU', 42)
>>>+box.internal.collation.create('test', 'nothing', 'ru_RU')
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>+box.internal.collation.drop('test')
>>>+box.internal.collation.drop('nothing') -- allowed
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42)
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options')
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'})
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'})
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok
>>>+box.internal.collation.drop('test') --ok
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'})
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42})
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok
>>>+box.internal.collation.drop('test') --ok
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok
>>>+box.internal.collation.drop('test') --ok
>>>+c = box.space._collation:get{1}:totable()
>>>+c[2] = 'unicode_test'
>>>+box.space._collation:replace(c)
>>>+
>>>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback()
>>>+
>>>+box.internal.collation.create('test', 'ICU', 'ru_RU')
>>>+box.internal.collation.exists('test')
>>>+
>>>+test_run:cmd('restart server default')
>>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end
>>>+
>>>+box.internal.collation.exists('test')
>>>+box.internal.collation.drop('test')
>>>+
>>>+box.space._collation:auto_increment{'test'}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU'}
>>>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'}
>>>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'}
>>>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 42}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>+box.space._collation.index.name:delete{'test'} -- ok
>>>+box.space._collation.index.name:delete{'nothing'} -- allowed
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}}
>>>+opts = {normalization_mode='NORMAL'}
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.normalization_mode = 'OFF'
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+opts.numeric_collation = 'PERL'
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.numeric_collation = 'ON'
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+opts.alternate_handling1 = 'ON'
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.alternate_handling1 = nil
>>>+opts.alternate_handling = 'ON'
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.alternate_handling = 'SHIFTED'
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+opts.case_first = 'ON'
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.case_first = 'OFF'
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+opts.case_level = 'UPPER'
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts}
>>>+opts.case_level = 'DEFAULT'
>>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok
>>>+_ = box.space._collation.index.name:delete{'test'} -- ok
>>>+
>>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}}
>>>+box.space._collation:select{}
>>>+test_run:cmd('restart server default')
>>>+box.space._collation:select{}
>>>+box.space._collation.index.name:delete{'test'}
>>>diff --git a/test/box/ddl_collation_types.result b/test/box/ddl_collation_types.result
>>>new file mode 100644
>>>index 000000000..7eaef62c0
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation_types.result
>>>@@ -0,0 +1,21 @@
>>>+-- test-run result file version 2
>>>+-- Check that collation is allowed only for strings, scalar and any types.
>>>+format = {}
>>>+ | ---
>>>+ | ...
>>>+format[1] = {'field1', 'unsigned', collation = 'unicode'}
>>>+ | ---
>>>+ | ...
>>>+s = box.schema.create_space('test', {format = format})
>>>+ | ---
>>>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string,
>>>+ | scalar and any fields'
>>>+ | ...
>>>+format[1] = {'field2', 'array', collation = 'unicode_ci'}
>>>+ | ---
>>>+ | ...
>>>+s = box.schema.create_space('test', {format = format})
>>>+ | ---
>>>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string,
>>>+ | scalar and any fields'
>>>+ | ...
>>>diff --git a/test/box/ddl_collation_types.test.lua b/test/box/ddl_collation_types.test.lua
>>>new file mode 100644
>>>index 000000000..5930d54b0
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation_types.test.lua
>>>@@ -0,0 +1,6 @@
>>>+-- Check that collation is allowed only for strings, scalar and any types.
>>>+format = {}
>>>+format[1] = {'field1', 'unsigned', collation = 'unicode'}
>>>+s = box.schema.create_space('test', {format = format})
>>>+format[1] = {'field2', 'array', collation = 'unicode_ci'}
>>>+s = box.schema.create_space('test', {format = format})
>>>diff --git a/test/box/ddl_collation_wrong_id.result b/test/box/ddl_collation_wrong_id.result
>>>new file mode 100644
>>>index 000000000..c6cf058b1
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation_wrong_id.result
>>>@@ -0,0 +1,21 @@
>>>+-- test-run result file version 2
>>>+-- Check that error is raised when collation with wrong id is used.
>>>+_space = box.space[box.schema.SPACE_ID]
>>>+ | ---
>>>+ | ...
>>>+utils = require('utils')
>>>+ | ---
>>>+ | ...
>>>+EMPTY_MAP = utils.setmap({})
>>>+ | ---
>>>+ | ...
>>>+format = {{name = 'field1', type = 'string', collation = 666}}
>>>+ | ---
>>>+ | ...
>>>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format}
>>>+ | ---
>>>+ | ...
>>>+_space:insert(surrogate_space)
>>>+ | ---
>>>+ | - error: 'Wrong collation options (field 1): collation was not found by ID'
>>>+ | ...
>>>diff --git a/test/box/ddl_collation_wrong_id.test.lua b/test/box/ddl_collation_wrong_id.test.lua
>>>new file mode 100644
>>>index 000000000..8d28d3ee1
>>>--- /dev/null
>>>+++ b/test/box/ddl_collation_wrong_id.test.lua
>>>@@ -0,0 +1,7 @@
>>>+-- Check that error is raised when collation with wrong id is used.
>>>+_space = box.space[box.schema.SPACE_ID]
>>>+utils = require('utils')
>>>+EMPTY_MAP = utils.setmap({})
>>>+format = {{name = 'field1', type = 'string', collation = 666}}
>>>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format}
>>>+_space:insert(surrogate_space)
>>>diff --git a/test/box/ddl_no_collation.result b/test/box/ddl_no_collation.result
>>>new file mode 100644
>>>index 000000000..6f4e8fa0b
>>>--- /dev/null
>>>+++ b/test/box/ddl_no_collation.result
>>>@@ -0,0 +1,12 @@
>>>+-- test-run result file version 2
>>>+-- Check that error is raised when collation doesn't exists.
>>>+format = {}
>>>+ | ---
>>>+ | ...
>>>+format[1] = {'field1', 'unsigend', collation = 'test_coll'}
>>>+ | ---
>>>+ | ...
>>>+s = box.schema.create_space('test', {format = format})
>>>+ | ---
>>>+ | - error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll'''
>>>+ | ...
>>>diff --git a/test/box/ddl_no_collation.test.lua b/test/box/ddl_no_collation.test.lua
>>>new file mode 100644
>>>index 000000000..3e411373b
>>>--- /dev/null
>>>+++ b/test/box/ddl_no_collation.test.lua
>>>@@ -0,0 +1,4 @@
>>>+-- Check that error is raised when collation doesn't exists.
>>>+format = {}
>>>+format[1] = {'field1', 'unsigend', collation = 'test_coll'}
>>>+s = box.schema.create_space('test', {format = format})
>>>diff --git a/test/box/ddl_parallel.result b/test/box/ddl_parallel.result
>>>new file mode 100644
>>>index 000000000..dfa4a1422
>>>--- /dev/null
>>>+++ b/test/box/ddl_parallel.result
>>>@@ -0,0 +1,61 @@
>>>+-- test-run result file version 2
>>>+env = require('test_run')
>>>+ | ---
>>>+ | ...
>>>+test_run = env.new()
>>>+ | ---
>>>+ | ...
>>>+
>>>+fiber = require'fiber'
>>>+ | ---
>>>+ | ...
>>>+
>>>+-- simple test for parallel ddl execution
>>>+_ = box.schema.space.create('test'):create_index('pk')
>>>+ | ---
>>>+ | ...
>>>+
>>>+ch = fiber.channel(2)
>>>+ | ---
>>>+ | ...
>>>+
>>>+test_run:cmd("setopt delimiter ';'")
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+
>>>+function f1()
>>>+ box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>+ ch:put(true)
>>>+end;
>>>+ | ---
>>>+ | ...
>>>+
>>>+function f2()
>>>+ box.space.test:create_index('third', {parts = {3, 'string'}})
>>>+ ch:put(true)
>>>+end;
>>>+ | ---
>>>+ | ...
>>>+
>>>+test_run:cmd("setopt delimiter ''");
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+
>>>+_ = {fiber.create(f1), fiber.create(f2)}
>>>+ | ---
>>>+ | ...
>>>+
>>>+ch:get()
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+ch:get()
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+
>>>+_ = box.space.test:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/ddl_parallel.test.lua b/test/box/ddl_parallel.test.lua
>>>new file mode 100644
>>>index 000000000..99c3bfdcc
>>>--- /dev/null
>>>+++ b/test/box/ddl_parallel.test.lua
>>>@@ -0,0 +1,30 @@
>>>+env = require('test_run')
>>>+test_run = env.new()
>>>+
>>>+fiber = require'fiber'
>>>+
>>>+-- simple test for parallel ddl execution
>>>+_ = box.schema.space.create('test'):create_index('pk')
>>>+
>>>+ch = fiber.channel(2)
>>>+
>>>+test_run:cmd("setopt delimiter ';'")
>>>+
>>>+function f1()
>>>+ box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>+ ch:put(true)
>>>+end;
>>>+
>>>+function f2()
>>>+ box.space.test:create_index('third', {parts = {3, 'string'}})
>>>+ ch:put(true)
>>>+end;
>>>+
>>>+test_run:cmd("setopt delimiter ''");
>>>+
>>>+_ = {fiber.create(f1), fiber.create(f2)}
>>>+
>>>+ch:get()
>>>+ch:get()
>>>+
>>>+_ = box.space.test:drop()
>>>diff --git a/test/box/ddl_tuple.result b/test/box/ddl_tuple.result
>>>new file mode 100644
>>>index 000000000..6a024a833
>>>--- /dev/null
>>>+++ b/test/box/ddl_tuple.result
>>>@@ -0,0 +1,67 @@
>>>+-- test-run result file version 2
>>>+env = require('test_run')
>>>+ | ---
>>>+ | ...
>>>+test_run = env.new()
>>>+ | ---
>>>+ | ...
>>>+
>>>+fiber = require'fiber'
>>>+ | ---
>>>+ | ...
>>>+ch = fiber.channel(3)
>>>+ | ---
>>>+ | ...
>>>+
>>>+_ = box.schema.space.create('test'):create_index('pk')
>>>+ | ---
>>>+ | ...
>>>+
>>>+test_run:cmd("setopt delimiter ';'")
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+function add_index()
>>>+ box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>+ ch:put(true)
>>>+end;
>>>+ | ---
>>>+ | ...
>>>+
>>>+function insert_tuple(tuple)
>>>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)})
>>>+end;
>>>+ | ---
>>>+ | ...
>>>+test_run:cmd("setopt delimiter ''");
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+
>>>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})}
>>>+ | ---
>>>+ | ...
>>>+{ch:get(), ch:get(), ch:get()}
>>>+ | ---
>>>+ | - - - false
>>>+ | - 'Tuple field 2 type does not match one required by operation: expected unsigned'
>>>+ | - - true
>>>+ | - [1, 2, 'a']
>>>+ | - true
>>>+ | ...
>>>+
>>>+box.space.test:select()
>>>+ | ---
>>>+ | - - [1, 2, 'a']
>>>+ | ...
>>>+
>>>+test_run:cmd('restart server default')
>>>+ |
>>>+
>>>+box.space.test:select()
>>>+ | ---
>>>+ | - - [1, 2, 'a']
>>>+ | ...
>>>+box.space.test:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/ddl_tuple.test.lua b/test/box/ddl_tuple.test.lua
>>>new file mode 100644
>>>index 000000000..1c78a00e4
>>>--- /dev/null
>>>+++ b/test/box/ddl_tuple.test.lua
>>>@@ -0,0 +1,28 @@
>>>+env = require('test_run')
>>>+test_run = env.new()
>>>+
>>>+fiber = require'fiber'
>>>+ch = fiber.channel(3)
>>>+
>>>+_ = box.schema.space.create('test'):create_index('pk')
>>>+
>>>+test_run:cmd("setopt delimiter ';'")
>>>+function add_index()
>>>+ box.space.test:create_index('sec', {parts = {2, 'num'}})
>>>+ ch:put(true)
>>>+end;
>>>+
>>>+function insert_tuple(tuple)
>>>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)})
>>>+end;
>>>+test_run:cmd("setopt delimiter ''");
>>>+
>>>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})}
>>>+{ch:get(), ch:get(), ch:get()}
>>>+
>>>+box.space.test:select()
>>>+
>>>+test_run:cmd('restart server default')
>>>+
>>>+box.space.test:select()
>>>+box.space.test:drop()
>>>diff --git a/test/box/gh-2336-ddl_call_twice.result b/test/box/gh-2336-ddl_call_twice.result
>>>new file mode 100644
>>>index 000000000..0f55c9c09
>>>--- /dev/null
>>>+++ b/test/box/gh-2336-ddl_call_twice.result
>>>@@ -0,0 +1,44 @@
>>>+-- test-run result file version 2
>>>+-- gh-2336 crash if format called twice during snapshot
>>>+fiber = require'fiber'
>>>+ | ---
>>>+ | ...
>>>+
>>>+space = box.schema.space.create('test_format')
>>>+ | ---
>>>+ | ...
>>>+_ = space:create_index('pk', { parts = { 1,'str' }})
>>>+ | ---
>>>+ | ...
>>>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }})
>>>+ | ---
>>>+ | ...
>>>+str = string.rep("t",1024)
>>>+ | ---
>>>+ | ...
>>>+for i = 1, 10000 do space:insert{tostring(i), str} end
>>>+ | ---
>>>+ | ...
>>>+ch = fiber.channel(3)
>>>+ | ---
>>>+ | ...
>>>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end)
>>>+ | ---
>>>+ | ...
>>>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}}
>>>+ | ---
>>>+ | ...
>>>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end
>>>+ | ---
>>>+ | ...
>>>+
>>>+{ch:get(), ch:get(), ch:get()}
>>>+ | ---
>>>+ | - - true
>>>+ | - true
>>>+ | - true
>>>+ | ...
>>>+
>>>+space:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/gh-2336-ddl_call_twice.test.lua b/test/box/gh-2336-ddl_call_twice.test.lua
>>>new file mode 100644
>>>index 000000000..f92afc211
>>>--- /dev/null
>>>+++ b/test/box/gh-2336-ddl_call_twice.test.lua
>>>@@ -0,0 +1,16 @@
>>>+-- gh-2336 crash if format called twice during snapshot
>>>+fiber = require'fiber'
>>>+
>>>+space = box.schema.space.create('test_format')
>>>+_ = space:create_index('pk', { parts = { 1,'str' }})
>>>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }})
>>>+str = string.rep("t",1024)
>>>+for i = 1, 10000 do space:insert{tostring(i), str} end
>>>+ch = fiber.channel(3)
>>>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end)
>>>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}}
>>>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end
>>>+
>>>+{ch:get(), ch:get(), ch:get()}
>>>+
>>>+space:drop()
>>>diff --git a/test/box/gh-2783-ddl_lock.result b/test/box/gh-2783-ddl_lock.result
>>>new file mode 100644
>>>index 000000000..7b3ba3444
>>>--- /dev/null
>>>+++ b/test/box/gh-2783-ddl_lock.result
>>>@@ -0,0 +1,62 @@
>>>+-- test-run result file version 2
>>>+env = require('test_run')
>>>+ | ---
>>>+ | ...
>>>+test_run = env.new()
>>>+ | ---
>>>+ | ...
>>>+
>>>+--
>>>+-- gh-2783
>>>+-- A ddl operation shoud fail before trying to lock a ddl latch
>>>+-- in a multi-statement transaction.
>>>+-- If operation tries to lock already an locked latch then the
>>>+-- current transaction will be silently rolled back under our feet.
>>>+-- This is confusing. So check for multi-statement transaction
>>>+-- before locking the latch.
>>>+--
>>>+test_latch = box.schema.space.create('test_latch')
>>>+ | ---
>>>+ | ...
>>>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}})
>>>+ | ---
>>>+ | ...
>>>+fiber = require('fiber')
>>>+ | ---
>>>+ | ...
>>>+c = fiber.channel(1)
>>>+ | ---
>>>+ | ...
>>>+test_run:cmd("setopt delimiter ';'")
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+_ = fiber.create(function()
>>>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}})
>>>+ c:put(true)
>>>+end);
>>>+ | ---
>>>+ | ...
>>>+
>>>+-- Should be Ok for now
>>>+box.begin()
>>>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}})
>>>+box.commit();
>>>+ | ---
>>>+ | ...
>>>+test_run:cmd("setopt delimiter ''");
>>>+ | ---
>>>+ | - true
>>>+ | ...
>>>+-- Explicitly roll back the transaction in multi-statement,
>>>+-- which hasn't finished due to DDL error
>>>+box.rollback()
>>>+ | ---
>>>+ | ...
>>>+
>>>+_ = c:get()
>>>+ | ---
>>>+ | ...
>>>+test_latch:drop() -- this is where everything stops
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/gh-2783-ddl_lock.test.lua b/test/box/gh-2783-ddl_lock.test.lua
>>>new file mode 100644
>>>index 000000000..953e177a7
>>>--- /dev/null
>>>+++ b/test/box/gh-2783-ddl_lock.test.lua
>>>@@ -0,0 +1,33 @@
>>>+env = require('test_run')
>>>+test_run = env.new()
>>>+
>>>+--
>>>+-- gh-2783
>>>+-- A ddl operation shoud fail before trying to lock a ddl latch
>>>+-- in a multi-statement transaction.
>>>+-- If operation tries to lock already an locked latch then the
>>>+-- current transaction will be silently rolled back under our feet.
>>>+-- This is confusing. So check for multi-statement transaction
>>>+-- before locking the latch.
>>>+--
>>>+test_latch = box.schema.space.create('test_latch')
>>>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}})
>>>+fiber = require('fiber')
>>>+c = fiber.channel(1)
>>>+test_run:cmd("setopt delimiter ';'")
>>>+_ = fiber.create(function()
>>>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}})
>>>+ c:put(true)
>>>+end);
>>>+
>>>+-- Should be Ok for now
>>>+box.begin()
>>>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}})
>>>+box.commit();
>>>+test_run:cmd("setopt delimiter ''");
>>>+-- Explicitly roll back the transaction in multi-statement,
>>>+-- which hasn't finished due to DDL error
>>>+box.rollback()
>>>+
>>>+_ = c:get()
>>>+test_latch:drop() -- this is where everything stops
>>>diff --git a/test/box/gh-2839-ddl_custom_fields.result b/test/box/gh-2839-ddl_custom_fields.result
>>>new file mode 100644
>>>index 000000000..3846fe08e
>>>--- /dev/null
>>>+++ b/test/box/gh-2839-ddl_custom_fields.result
>>>@@ -0,0 +1,26 @@
>>>+-- test-run result file version 2
>>>+--
>>>+-- gh-2839: allow to store custom fields in field definition.
>>>+--
>>>+format = {}
>>>+ | ---
>>>+ | ...
>>>+format[1] = {name = 'field1', type = 'unsigned'}
>>>+ | ---
>>>+ | ...
>>>+format[2] = {'field2', 'unsigned'}
>>>+ | ---
>>>+ | ...
>>>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'}
>>>+ | ---
>>>+ | ...
>>>+s = box.schema.create_space('test', {format = format})
>>>+ | ---
>>>+ | ...
>>>+s:format()[3].custom_field
>>>+ | ---
>>>+ | - custom_value
>>>+ | ...
>>>+s:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/gh-2839-ddl_custom_fields.test.lua b/test/box/gh-2839-ddl_custom_fields.test.lua
>>>new file mode 100644
>>>index 000000000..e1c0e2a0b
>>>--- /dev/null
>>>+++ b/test/box/gh-2839-ddl_custom_fields.test.lua
>>>@@ -0,0 +1,10 @@
>>>+--
>>>+-- gh-2839: allow to store custom fields in field definition.
>>>+--
>>>+format = {}
>>>+format[1] = {name = 'field1', type = 'unsigned'}
>>>+format[2] = {'field2', 'unsigned'}
>>>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'}
>>>+s = box.schema.create_space('test', {format = format})
>>>+s:format()[3].custom_field
>>>+s:drop()
>>>diff --git a/test/box/gh-2937-ddl_collation_field_def.result b/test/box/gh-2937-ddl_collation_field_def.result
>>>new file mode 100644
>>>index 000000000..8b3de607e
>>>--- /dev/null
>>>+++ b/test/box/gh-2937-ddl_collation_field_def.result
>>>@@ -0,0 +1,27 @@
>>>+-- test-run result file version 2
>>>+--
>>>+-- gh-2937: allow to specify collation in field definition.
>>>+--
>>>+format = {}
>>>+ | ---
>>>+ | ...
>>>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'}
>>>+ | ---
>>>+ | ...
>>>+format[2] = {'field2', 'any', collation = 'unicode_ci'}
>>>+ | ---
>>>+ | ...
>>>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'}
>>>+ | ---
>>>+ | ...
>>>+s = box.schema.create_space('test', {format = format})
>>>+ | ---
>>>+ | ...
>>>+s:format()
>>>+ | ---
>>>+ | - [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2',
>>>+ | 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}]
>>>+ | ...
>>>+s:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/gh-2937-ddl_collation_field_def.test.lua b/test/box/gh-2937-ddl_collation_field_def.test.lua
>>>new file mode 100644
>>>index 000000000..1ddfa7246
>>>--- /dev/null
>>>+++ b/test/box/gh-2937-ddl_collation_field_def.test.lua
>>>@@ -0,0 +1,10 @@
>>>+--
>>>+-- gh-2937: allow to specify collation in field definition.
>>>+--
>>>+format = {}
>>>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'}
>>>+format[2] = {'field2', 'any', collation = 'unicode_ci'}
>>>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'}
>>>+s = box.schema.create_space('test', {format = format})
>>>+s:format()
>>>+s:drop()
>>>diff --git a/test/box/gh-3290-ddl_collation_deleted.result b/test/box/gh-3290-ddl_collation_deleted.result
>>>new file mode 100644
>>>index 000000000..eb59b6c1d
>>>--- /dev/null
>>>+++ b/test/box/gh-3290-ddl_collation_deleted.result
>>>@@ -0,0 +1,16 @@
>>>+-- test-run result file version 2
>>>+--
>>>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that
>>>+-- must work even if a collation is deleted from _collation.
>>>+--
>>>+t = box.space._collation:delete{1}
>>>+ | ---
>>>+ | ...
>>>+utf8.cmp('abc', 'def')
>>>+ | ---
>>>+ | - -1
>>>+ | ...
>>>+box.space._collation:replace(t)
>>>+ | ---
>>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}]
>>>+ | ...
>>>diff --git a/test/box/gh-3290-ddl_collation_deleted.test.lua b/test/box/gh-3290-ddl_collation_deleted.test.lua
>>>new file mode 100644
>>>index 000000000..5fd3d7e1a
>>>--- /dev/null
>>>+++ b/test/box/gh-3290-ddl_collation_deleted.test.lua
>>>@@ -0,0 +1,7 @@
>>>+--
>>>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that
>>>+-- must work even if a collation is deleted from _collation.
>>>+--
>>>+t = box.space._collation:delete{1}
>>>+utf8.cmp('abc', 'def')
>>>+box.space._collation:replace(t)
>>>diff --git a/test/box/gh-928-ddl_truncate.result b/test/box/gh-928-ddl_truncate.result
>>>new file mode 100644
>>>index 000000000..f244e07f1
>>>--- /dev/null
>>>+++ b/test/box/gh-928-ddl_truncate.result
>>>@@ -0,0 +1,35 @@
>>>+-- test-run result file version 2
>>>+fiber = require'fiber'
>>>+ | ---
>>>+ | ...
>>>+ch = fiber.channel(2)
>>>+ | ---
>>>+ | ...
>>>+
>>>+--issue #928
>>>+space = box.schema.space.create('test_trunc')
>>>+ | ---
>>>+ | ...
>>>+_ = space:create_index('pk')
>>>+ | ---
>>>+ | ...
>>>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
>>>+ | ---
>>>+ | ...
>>>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
>>>+ | ---
>>>+ | ...
>>>+
>>>+function test_trunc() space:truncate() ch:put(true) end
>>>+ | ---
>>>+ | ...
>>>+
>>>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
>>>+ | ---
>>>+ | ...
>>>+_ = {ch:get(), ch:get()}
>>>+ | ---
>>>+ | ...
>>>+space:drop()
>>>+ | ---
>>>+ | ...
>>>diff --git a/test/box/gh-928-ddl_truncate.test.lua b/test/box/gh-928-ddl_truncate.test.lua
>>>new file mode 100644
>>>index 000000000..10be8c361
>>>--- /dev/null
>>>+++ b/test/box/gh-928-ddl_truncate.test.lua
>>>@@ -0,0 +1,14 @@
>>>+fiber = require'fiber'
>>>+ch = fiber.channel(2)
>>>+
>>>+--issue #928
>>>+space = box.schema.space.create('test_trunc')
>>>+_ = space:create_index('pk')
>>>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
>>>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
>>>+
>>>+function test_trunc() space:truncate() ch:put(true) end
>>>+
>>>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
>>>+_ = {ch:get(), ch:get()}
>>>+space:drop()
>>>--
>>>2.17.1
>>>  
>> 
>> 
>>--
>>Oleg Piskunov
>>  
> 
> 
>--
>Alexander Tikhonov
>  
 
 
--
Oleg Piskunov
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20200320/48c2be5a/attachment.html>


More information about the Tarantool-patches mailing list