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

Alexander Tikhonov avtikhon at tarantool.org
Thu Mar 19 16:50:44 MSK 2020



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
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20200319/03b0a4d8/attachment.html>


More information about the Tarantool-patches mailing list