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