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