* [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test @ 2020-03-18 10:37 Alexander V. Tikhonov 2020-03-18 12:06 ` Oleg Piskunov 2020-04-15 15:26 ` Kirill Yukhin 0 siblings, 2 replies; 6+ messages in thread From: Alexander V. Tikhonov @ 2020-03-18 10:37 UTC (permalink / raw) To: Sergey Bronnikov; +Cc: Oleg Piskunov, tarantool-patches 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test 2020-03-18 10:37 [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test Alexander V. Tikhonov @ 2020-03-18 12:06 ` Oleg Piskunov 2020-03-19 13:50 ` Alexander Tikhonov 2020-04-15 15:26 ` Kirill Yukhin 1 sibling, 1 reply; 6+ messages in thread From: Oleg Piskunov @ 2020-03-18 12:06 UTC (permalink / raw) To: Alexander V. Tikhonov; +Cc: tarantool-patches [-- Attachment #1: Type: text/plain, Size: 146445 bytes --] 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 <avtikhon@tarantool.org>: > >Divided into tests: >- box/ddl_alter.test.lua >- box/ddl_collation.test.lua >- box/ddl_collation_types.test.lua >- box/ddl_collation_wrong_id.test.lua >- box/ddl_no_collation.test.lua >- box/ddl_parallel.test.lua >- box/ddl_tuple.test.lua >- box/gh-2336-ddl_call_twice.test.lua >- box/gh-2783-ddl_lock.test.lua >- box/gh-2839-ddl_custom_fields.test.lua >- box/gh-2937-ddl_collation_field_def.test.lua >- box/gh-3290-ddl_collation_deleted.test.lua >- box/gh-928-ddl_truncate.test.lua >--- > >Github: https://github.com/tarantool/tarantool/tree/avtikhon/divide_tests > > test/box/ddl.result | 1210 ----------------- > test/box/ddl.test.lua | 272 ---- > test/box/ddl_alter.result | 30 + > test/box/ddl_alter.test.lua | 9 + > test/box/ddl_collation.result | 853 ++++++++++++ > test/box/ddl_collation.test.lua | 90 ++ > test/box/ddl_collation_types.result | 21 + > test/box/ddl_collation_types.test.lua | 6 + > test/box/ddl_collation_wrong_id.result | 21 + > test/box/ddl_collation_wrong_id.test.lua | 7 + > test/box/ddl_no_collation.result | 12 + > test/box/ddl_no_collation.test.lua | 4 + > test/box/ddl_parallel.result | 61 + > test/box/ddl_parallel.test.lua | 30 + > test/box/ddl_tuple.result | 67 + > test/box/ddl_tuple.test.lua | 28 + > test/box/gh-2336-ddl_call_twice.result | 44 + > test/box/gh-2336-ddl_call_twice.test.lua | 16 + > test/box/gh-2783-ddl_lock.result | 62 + > test/box/gh-2783-ddl_lock.test.lua | 33 + > test/box/gh-2839-ddl_custom_fields.result | 26 + > test/box/gh-2839-ddl_custom_fields.test.lua | 10 + > .../gh-2937-ddl_collation_field_def.result | 27 + > .../gh-2937-ddl_collation_field_def.test.lua | 10 + > test/box/gh-3290-ddl_collation_deleted.result | 16 + > .../gh-3290-ddl_collation_deleted.test.lua | 7 + > test/box/gh-928-ddl_truncate.result | 35 + > test/box/gh-928-ddl_truncate.test.lua | 14 + > 28 files changed, 1539 insertions(+), 1482 deletions(-) > delete mode 100644 test/box/ddl.result > delete mode 100644 test/box/ddl.test.lua > create mode 100644 test/box/ddl_alter.result > create mode 100644 test/box/ddl_alter.test.lua > create mode 100644 test/box/ddl_collation.result > create mode 100644 test/box/ddl_collation.test.lua > create mode 100644 test/box/ddl_collation_types.result > create mode 100644 test/box/ddl_collation_types.test.lua > create mode 100644 test/box/ddl_collation_wrong_id.result > create mode 100644 test/box/ddl_collation_wrong_id.test.lua > create mode 100644 test/box/ddl_no_collation.result > create mode 100644 test/box/ddl_no_collation.test.lua > create mode 100644 test/box/ddl_parallel.result > create mode 100644 test/box/ddl_parallel.test.lua > create mode 100644 test/box/ddl_tuple.result > create mode 100644 test/box/ddl_tuple.test.lua > create mode 100644 test/box/gh-2336-ddl_call_twice.result > create mode 100644 test/box/gh-2336-ddl_call_twice.test.lua > create mode 100644 test/box/gh-2783-ddl_lock.result > create mode 100644 test/box/gh-2783-ddl_lock.test.lua > create mode 100644 test/box/gh-2839-ddl_custom_fields.result > create mode 100644 test/box/gh-2839-ddl_custom_fields.test.lua > create mode 100644 test/box/gh-2937-ddl_collation_field_def.result > create mode 100644 test/box/gh-2937-ddl_collation_field_def.test.lua > create mode 100644 test/box/gh-3290-ddl_collation_deleted.result > create mode 100644 test/box/gh-3290-ddl_collation_deleted.test.lua > create mode 100644 test/box/gh-928-ddl_truncate.result > create mode 100644 test/box/gh-928-ddl_truncate.test.lua > >diff --git a/test/box/ddl.result b/test/box/ddl.result >deleted file mode 100644 >index b995b1493..000000000 >--- a/test/box/ddl.result >+++ /dev/null >@@ -1,1210 +0,0 @@ >-env = require('test_run') >---- >-... >-test_run = env.new() >---- >-... >-fiber = require'fiber' >---- >-... >--- simple test for parallel ddl execution >-_ = box.schema.space.create('test'):create_index('pk') >---- >-... >-ch = fiber.channel(2) >---- >-... >-test_run:cmd("setopt delimiter ';'") >---- >-- true >-... >-function f1() >- box.space.test:create_index('sec', {parts = {2, 'num'}}) >- ch:put(true) >-end; >---- >-... >-function f2() >- box.space.test:create_index('third', {parts = {3, 'string'}}) >- ch:put(true) >-end; >---- >-... >-test_run:cmd("setopt delimiter ''"); >---- >-- true >-... >-_ = {fiber.create(f1), fiber.create(f2)} >---- >-... >-ch:get() >---- >-- true >-... >-ch:get() >---- >-- true >-... >-_ = box.space.test:drop() >---- >-... >-test_run:cmd('restart server default') >-env = require('test_run') >---- >-... >-test_run = env.new() >---- >-... >-fiber = require'fiber' >---- >-... >-ch = fiber.channel(2) >---- >-... >---issue #928 >-space = box.schema.space.create('test_trunc') >---- >-... >-_ = space:create_index('pk') >---- >-... >-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >---- >-... >-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >---- >-... >-function test_trunc() space:truncate() ch:put(true) end >---- >-... >-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >---- >-... >-_ = {ch:get(), ch:get()} >---- >-... >-space:drop() >---- >-... >--- index should not crash after alter >-space = box.schema.space.create('test_swap') >---- >-... >-index = space:create_index('pk') >---- >-... >-space:replace({1, 2, 3}) >---- >-- [1, 2, 3] >-... >-index:rename('primary') >---- >-... >-index2 = space:create_index('sec') >---- >-... >-space:replace({2, 3, 1}) >---- >-- [2, 3, 1] >-... >-space:select() >---- >-- - [1, 2, 3] >- - [2, 3, 1] >-... >-space:drop() >---- >-... >-ch = fiber.channel(3) >---- >-... >-_ = box.schema.space.create('test'):create_index('pk') >---- >-... >-test_run:cmd("setopt delimiter ';'") >---- >-- true >-... >-function add_index() >- box.space.test:create_index('sec', {parts = {2, 'num'}}) >- ch:put(true) >-end; >---- >-... >-function insert_tuple(tuple) >- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >-end; >---- >-... >-test_run:cmd("setopt delimiter ''"); >---- >-- true >-... >-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >---- >-... >-{ch:get(), ch:get(), ch:get()} >---- >-- - - false >- - 'Tuple field 2 type does not match one required by operation: expected unsigned' >- - - true >- - [1, 2, 'a'] >- - true >-... >-box.space.test:select() >---- >-- - [1, 2, 'a'] >-... >-test_run:cmd('restart server default') >-box.space.test:select() >---- >-- - [1, 2, 'a'] >-... >-box.space.test:drop() >---- >-... >--- gh-2336 crash if format called twice during snapshot >-fiber = require'fiber' >---- >-... >-space = box.schema.space.create('test_format') >---- >-... >-_ = space:create_index('pk', { parts = { 1,'str' }}) >---- >-... >-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >---- >-... >-str = string.rep("t",1024) >---- >-... >-for i = 1, 10000 do space:insert{tostring(i), str} end >---- >-... >-ch = fiber.channel(3) >---- >-... >-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >---- >-... >-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >---- >-... >-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >---- >-... >-{ch:get(), ch:get(), ch:get()} >---- >-- - true >- - true >- - true >-... >-space:drop() >---- >-... >--- collation >-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >---- >-... >-box.internal.collation.create('test') >---- >-- error: Illegal parameters, type (second arg) must be a string >-... >-box.internal.collation.create('test', 'ICU') >---- >-- error: Illegal parameters, locale (third arg) must be a string >-... >-box.internal.collation.create(42, 'ICU', 'ru_RU') >---- >-- error: Illegal parameters, name (first arg) must be a string >-... >-box.internal.collation.create('test', 42, 'ru_RU') >---- >-- error: Illegal parameters, type (second arg) must be a string >-... >-box.internal.collation.create('test', 'ICU', 42) >---- >-- error: Illegal parameters, locale (third arg) must be a string >-... >-box.internal.collation.create('test', 'nothing', 'ru_RU') >---- >-- error: 'Failed to initialize collation: unknown collation type.' >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >---- >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU') >---- >-- error: Duplicate key exists in unique index 'name' in space '_collation' >-... >-box.internal.collation.drop('test') >---- >-... >-box.internal.collation.drop('nothing') -- allowed >---- >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >---- >-- error: Illegal parameters, options (fourth arg) must be a table or nil >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >---- >-- error: Illegal parameters, options (fourth arg) must be a table or nil >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >---- >-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >---- >-- error: 'Failed to initialize collation: ICU wrong french_collation option setting, >- expected ON | OFF.' >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >---- >-... >-box.internal.collation.drop('test') --ok >---- >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >---- >-- error: 'Failed to initialize collation: ICU wrong strength option setting, expected >- PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >---- >-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >---- >-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >-... >-box.internal.collation.drop('test') --ok >---- >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >---- >-... >-box.internal.collation.drop('test') --ok >---- >-... >-c = box.space._collation:get{1}:totable() >---- >-... >-c[2] = 'unicode_test' >---- >-... >-box.space._collation:replace(c) >---- >-- error: collation does not support alter >-... >-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >---- >-... >-box.internal.collation.create('test', 'ICU', 'ru_RU') >---- >-... >-box.internal.collation.exists('test') >---- >-- true >-... >-test_run:cmd('restart server default') >-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >---- >-... >-box.internal.collation.exists('test') >---- >-- true >-... >-box.internal.collation.drop('test') >---- >-... >-box.space._collation:auto_increment{'test'} >---- >-- error: Tuple field 3 required by space format is missing >-... >-box.space._collation:auto_increment{'test', 0, 'ICU'} >---- >-- error: Tuple field 5 required by space format is missing >-... >-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >---- >-- error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >-... >-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >---- >-- error: 'Tuple field 2 type does not match one required by operation: expected string' >-... >-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >---- >-- error: 'Tuple field 4 type does not match one required by operation: expected string' >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >---- >-- error: 'Tuple field 5 type does not match one required by operation: expected string' >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >---- >-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >---- >-- error: Duplicate key exists in unique index 'name' in space '_collation' >-... >-box.space._collation.index.name:delete{'test'} -- ok >---- >-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >-box.space._collation.index.name:delete{'nothing'} -- allowed >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >---- >-- error: 'Tuple field 6 type does not match one required by operation: expected map' >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >---- >-- error: 'Tuple field 6 type does not match one required by operation: expected map' >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >---- >-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >-... >-opts = {normalization_mode='NORMAL'} >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >- expected ON | OFF.' >-... >-opts.normalization_mode = 'OFF' >---- >-... >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >---- >-... >-_ = box.space._collation.index.name:delete{'test'} -- ok >---- >-... >-opts.numeric_collation = 'PERL' >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >- expected ON | OFF.' >-... >-opts.numeric_collation = 'ON' >---- >-... >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >---- >-... >-_ = box.space._collation.index.name:delete{'test'} -- ok >---- >-... >-opts.alternate_handling1 = 'ON' >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >-... >-opts.alternate_handling1 = nil >---- >-... >-opts.alternate_handling = 'ON' >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >- expected NON_IGNORABLE | SHIFTED.' >-... >-opts.alternate_handling = 'SHIFTED' >---- >-... >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >---- >-... >-_ = box.space._collation.index.name:delete{'test'} -- ok >---- >-... >-opts.case_first = 'ON' >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >- OFF | UPPER_FIRST | LOWER_FIRST.' >-... >-opts.case_first = 'OFF' >---- >-... >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >---- >-... >-_ = box.space._collation.index.name:delete{'test'} -- ok >---- >-... >-opts.case_level = 'UPPER' >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >---- >-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >- ON | OFF.' >-... >-opts.case_level = 'DEFAULT' >---- >-... >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >---- >-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >- ON | OFF.' >-... >-_ = box.space._collation.index.name:delete{'test'} -- ok >---- >-... >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >---- >-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >-box.space._collation:select{} >---- >-- - [0, 'none', 1, 'BINARY', '', {}] >- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >- - [3, 'binary', 1, 'BINARY', '', {}] >- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >-test_run:cmd('restart server default') >-box.space._collation:select{} >---- >-- - [0, 'none', 1, 'BINARY', '', {}] >- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >- - [3, 'binary', 1, 'BINARY', '', {}] >- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >-box.space._collation.index.name:delete{'test'} >---- >-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >-... >--- >--- gh-3290: expose ICU into Lua. It uses built-in collations, that >--- must work even if a collation is deleted from _collation. >--- >-t = box.space._collation:delete{1} >---- >-... >-utf8.cmp('abc', 'def') >---- >-- -1 >-... >-box.space._collation:replace(t) >---- >-- [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >-... >--- >--- gh-2839: allow to store custom fields in field definition. >--- >-format = {} >---- >-... >-format[1] = {name = 'field1', type = 'unsigned'} >---- >-... >-format[2] = {'field2', 'unsigned'} >---- >-... >-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >---- >-... >-s = box.schema.create_space('test', {format = format}) >---- >-... >-s:format()[3].custom_field >---- >-- custom_value >-... >-s:drop() >---- >-... >--- >--- gh-2937: allow to specify collation in field definition. >--- >-format = {} >---- >-... >-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >---- >-... >-format[2] = {'field2', 'any', collation = 'unicode_ci'} >---- >-... >-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >---- >-... >-s = box.schema.create_space('test', {format = format}) >---- >-... >-s:format() >---- >-- [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >- 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >-... >-s:drop() >---- >-... >--- Check that collation is allowed only for stings, scalar and any types. >-format = {} >---- >-... >-format[1] = {'field1', 'unsigned', collation = 'unicode'} >---- >-... >-s = box.schema.create_space('test', {format = format}) >---- >-- error: 'Failed to create space ''test'': collation is reasonable only for string, >- scalar and any fields' >-... >-format[1] = {'field2', 'array', collation = 'unicode_ci'} >---- >-... >-s = box.schema.create_space('test', {format = format}) >---- >-- error: 'Failed to create space ''test'': collation is reasonable only for string, >- scalar and any fields' >-... >--- Check that error is raised when collation doesn't exists. >-format = {} >---- >-... >-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >---- >-... >-s = box.schema.create_space('test', {format = format}) >---- >-- error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >-... >--- Check that error is raised when collation with wrong id is used. >-_space = box.space[box.schema.SPACE_ID] >---- >-... >-utils = require('utils') >---- >-... >-EMPTY_MAP = utils.setmap({}) >---- >-... >-format = {{name = 'field1', type = 'string', collation = 666}} >---- >-... >-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >---- >-... >-_space:insert(surrogate_space) >---- >-- error: 'Wrong collation options (field 1): collation was not found by ID' >-... >--- >--- gh-2783 >--- A ddl operation shoud fail before trying to lock a ddl latch >--- in a multi-statement transaction. >--- If operation tries to lock already an locked latch then the >--- current transaction will be silently rolled back under our feet. >--- This is confusing. So check for multi-statement transaction >--- before locking the latch. >--- >-test_latch = box.schema.space.create('test_latch') >---- >-... >-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >---- >-... >-fiber = require('fiber') >---- >-... >-c = fiber.channel(1) >---- >-... >-test_run:cmd("setopt delimiter ';'") >---- >-- true >-... >-_ = fiber.create(function() >- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >- c:put(true) >-end); >---- >-... >--- Should be Ok for now >-box.begin() >- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >-box.commit(); >---- >-... >-test_run:cmd("setopt delimiter ''"); >---- >-- true >-... >--- Explicitly roll back the transaction in multi-statement, >--- which hasn't finished due to DDL error >-box.rollback() >---- >-... >-_ = c:get() >---- >-... >-test_latch:drop() -- this is where everything stops >---- >-... >diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua >deleted file mode 100644 >index 101bc6f9b..000000000 >--- a/test/box/ddl.test.lua >+++ /dev/null >@@ -1,272 +0,0 @@ >-env = require('test_run') >-test_run = env.new() >- >-fiber = require'fiber' >- >--- simple test for parallel ddl execution >-_ = box.schema.space.create('test'):create_index('pk') >- >-ch = fiber.channel(2) >- >-test_run:cmd("setopt delimiter ';'") >- >-function f1() >- box.space.test:create_index('sec', {parts = {2, 'num'}}) >- ch:put(true) >-end; >- >-function f2() >- box.space.test:create_index('third', {parts = {3, 'string'}}) >- ch:put(true) >-end; >- >-test_run:cmd("setopt delimiter ''"); >- >-_ = {fiber.create(f1), fiber.create(f2)} >- >-ch:get() >-ch:get() >- >-_ = box.space.test:drop() >- >-test_run:cmd('restart server default') >- >-env = require('test_run') >-test_run = env.new() >-fiber = require'fiber' >- >-ch = fiber.channel(2) >- >---issue #928 >-space = box.schema.space.create('test_trunc') >-_ = space:create_index('pk') >-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >- >-function test_trunc() space:truncate() ch:put(true) end >- >-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >-_ = {ch:get(), ch:get()} >-space:drop() >- >--- index should not crash after alter >-space = box.schema.space.create('test_swap') >-index = space:create_index('pk') >-space:replace({1, 2, 3}) >-index:rename('primary') >-index2 = space:create_index('sec') >-space:replace({2, 3, 1}) >-space:select() >-space:drop() >- >- >-ch = fiber.channel(3) >- >-_ = box.schema.space.create('test'):create_index('pk') >- >-test_run:cmd("setopt delimiter ';'") >-function add_index() >- box.space.test:create_index('sec', {parts = {2, 'num'}}) >- ch:put(true) >-end; >- >-function insert_tuple(tuple) >- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >-end; >-test_run:cmd("setopt delimiter ''"); >- >-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >-{ch:get(), ch:get(), ch:get()} >- >-box.space.test:select() >- >-test_run:cmd('restart server default') >- >-box.space.test:select() >-box.space.test:drop() >- >--- gh-2336 crash if format called twice during snapshot >-fiber = require'fiber' >- >-space = box.schema.space.create('test_format') >-_ = space:create_index('pk', { parts = { 1,'str' }}) >-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >-str = string.rep("t",1024) >-for i = 1, 10000 do space:insert{tostring(i), str} end >-ch = fiber.channel(3) >-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >- >-{ch:get(), ch:get(), ch:get()} >- >-space:drop() >- >--- collation >-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >- >-box.internal.collation.create('test') >-box.internal.collation.create('test', 'ICU') >-box.internal.collation.create(42, 'ICU', 'ru_RU') >-box.internal.collation.create('test', 42, 'ru_RU') >-box.internal.collation.create('test', 'ICU', 42) >-box.internal.collation.create('test', 'nothing', 'ru_RU') >-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >-box.internal.collation.create('test', 'ICU', 'ru_RU') >-box.internal.collation.drop('test') >-box.internal.collation.drop('nothing') -- allowed >-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >-box.internal.collation.drop('test') --ok >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >-box.internal.collation.drop('test') --ok >-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >-box.internal.collation.drop('test') --ok >-c = box.space._collation:get{1}:totable() >-c[2] = 'unicode_test' >-box.space._collation:replace(c) >- >-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >- >-box.internal.collation.create('test', 'ICU', 'ru_RU') >-box.internal.collation.exists('test') >- >-test_run:cmd('restart server default') >-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >- >-box.internal.collation.exists('test') >-box.internal.collation.drop('test') >- >-box.space._collation:auto_increment{'test'} >-box.space._collation:auto_increment{'test', 0, 'ICU'} >-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >-box.space._collation.index.name:delete{'test'} -- ok >-box.space._collation.index.name:delete{'nothing'} -- allowed >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >-opts = {normalization_mode='NORMAL'} >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.normalization_mode = 'OFF' >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >-_ = box.space._collation.index.name:delete{'test'} -- ok >-opts.numeric_collation = 'PERL' >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.numeric_collation = 'ON' >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >-_ = box.space._collation.index.name:delete{'test'} -- ok >-opts.alternate_handling1 = 'ON' >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.alternate_handling1 = nil >-opts.alternate_handling = 'ON' >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.alternate_handling = 'SHIFTED' >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >-_ = box.space._collation.index.name:delete{'test'} -- ok >-opts.case_first = 'ON' >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.case_first = 'OFF' >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >-_ = box.space._collation.index.name:delete{'test'} -- ok >-opts.case_level = 'UPPER' >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >-opts.case_level = 'DEFAULT' >-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >-_ = box.space._collation.index.name:delete{'test'} -- ok >- >-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >-box.space._collation:select{} >-test_run:cmd('restart server default') >-box.space._collation:select{} >-box.space._collation.index.name:delete{'test'} >- >--- >--- gh-3290: expose ICU into Lua. It uses built-in collations, that >--- must work even if a collation is deleted from _collation. >--- >-t = box.space._collation:delete{1} >-utf8.cmp('abc', 'def') >-box.space._collation:replace(t) >- >--- >--- gh-2839: allow to store custom fields in field definition. >--- >-format = {} >-format[1] = {name = 'field1', type = 'unsigned'} >-format[2] = {'field2', 'unsigned'} >-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >-s = box.schema.create_space('test', {format = format}) >-s:format()[3].custom_field >-s:drop() >- >--- >--- gh-2937: allow to specify collation in field definition. >--- >-format = {} >-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >-format[2] = {'field2', 'any', collation = 'unicode_ci'} >-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >-s = box.schema.create_space('test', {format = format}) >-s:format() >-s:drop() >- >--- Check that collation is allowed only for stings, scalar and any types. >-format = {} >-format[1] = {'field1', 'unsigned', collation = 'unicode'} >-s = box.schema.create_space('test', {format = format}) >-format[1] = {'field2', 'array', collation = 'unicode_ci'} >-s = box.schema.create_space('test', {format = format}) >- >--- Check that error is raised when collation doesn't exists. >-format = {} >-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >-s = box.schema.create_space('test', {format = format}) >- >--- Check that error is raised when collation with wrong id is used. >-_space = box.space[box.schema.SPACE_ID] >-utils = require('utils') >-EMPTY_MAP = utils.setmap({}) >-format = {{name = 'field1', type = 'string', collation = 666}} >-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >-_space:insert(surrogate_space) >- >--- >--- gh-2783 >--- A ddl operation shoud fail before trying to lock a ddl latch >--- in a multi-statement transaction. >--- If operation tries to lock already an locked latch then the >--- current transaction will be silently rolled back under our feet. >--- This is confusing. So check for multi-statement transaction >--- before locking the latch. >--- >-test_latch = box.schema.space.create('test_latch') >-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >-fiber = require('fiber') >-c = fiber.channel(1) >-test_run:cmd("setopt delimiter ';'") >-_ = fiber.create(function() >- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >- c:put(true) >-end); >- >--- Should be Ok for now >-box.begin() >- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >-box.commit(); >-test_run:cmd("setopt delimiter ''"); >--- Explicitly roll back the transaction in multi-statement, >--- which hasn't finished due to DDL error >-box.rollback() >- >-_ = c:get() >-test_latch:drop() -- this is where everything stops >diff --git a/test/box/ddl_alter.result b/test/box/ddl_alter.result >new file mode 100644 >index 000000000..ce4a6ee69 >--- /dev/null >+++ b/test/box/ddl_alter.result >@@ -0,0 +1,30 @@ >+-- test-run result file version 2 >+-- index should not crash after alter >+space = box.schema.space.create('test_swap') >+ | --- >+ | ... >+index = space:create_index('pk') >+ | --- >+ | ... >+space:replace({1, 2, 3}) >+ | --- >+ | - [1, 2, 3] >+ | ... >+index:rename('primary') >+ | --- >+ | ... >+index2 = space:create_index('sec') >+ | --- >+ | ... >+space:replace({2, 3, 1}) >+ | --- >+ | - [2, 3, 1] >+ | ... >+space:select() >+ | --- >+ | - - [1, 2, 3] >+ | - [2, 3, 1] >+ | ... >+space:drop() >+ | --- >+ | ... >diff --git a/test/box/ddl_alter.test.lua b/test/box/ddl_alter.test.lua >new file mode 100644 >index 000000000..ab0263b78 >--- /dev/null >+++ b/test/box/ddl_alter.test.lua >@@ -0,0 +1,9 @@ >+-- index should not crash after alter >+space = box.schema.space.create('test_swap') >+index = space:create_index('pk') >+space:replace({1, 2, 3}) >+index:rename('primary') >+index2 = space:create_index('sec') >+space:replace({2, 3, 1}) >+space:select() >+space:drop() >diff --git a/test/box/ddl_collation.result b/test/box/ddl_collation.result >new file mode 100644 >index 000000000..2571ad072 >--- /dev/null >+++ b/test/box/ddl_collation.result >@@ -0,0 +1,853 @@ >+-- test-run result file version 2 >+env = require('test_run') >+ | --- >+ | ... >+test_run = env.new() >+ | --- >+ | ... >+ >+-- collation >+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >+ | --- >+ | ... >+ >+box.internal.collation.create('test') >+ | --- >+ | - error: Illegal parameters, type (second arg) must be a string >+ | ... >+box.internal.collation.create('test', 'ICU') >+ | --- >+ | - error: Illegal parameters, locale (third arg) must be a string >+ | ... >+box.internal.collation.create(42, 'ICU', 'ru_RU') >+ | --- >+ | - error: Illegal parameters, name (first arg) must be a string >+ | ... >+box.internal.collation.create('test', 42, 'ru_RU') >+ | --- >+ | - error: Illegal parameters, type (second arg) must be a string >+ | ... >+box.internal.collation.create('test', 'ICU', 42) >+ | --- >+ | - error: Illegal parameters, locale (third arg) must be a string >+ | ... >+box.internal.collation.create('test', 'nothing', 'ru_RU') >+ | --- >+ | - error: 'Failed to initialize collation: unknown collation type.' >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >+ | --- >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU') >+ | --- >+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >+ | ... >+box.internal.collation.drop('test') >+ | --- >+ | ... >+box.internal.collation.drop('nothing') -- allowed >+ | --- >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >+ | --- >+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >+ | --- >+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >+ | --- >+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong french_collation option setting, >+ | expected ON | OFF.' >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >+ | --- >+ | ... >+box.internal.collation.drop('test') --ok >+ | --- >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong strength option setting, expected >+ | PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >+ | --- >+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >+ | --- >+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >+ | ... >+box.internal.collation.drop('test') --ok >+ | --- >+ | ... >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >+ | --- >+ | ... >+box.internal.collation.drop('test') --ok >+ | --- >+ | ... >+c = box.space._collation:get{1}:totable() >+ | --- >+ | ... >+c[2] = 'unicode_test' >+ | --- >+ | ... >+box.space._collation:replace(c) >+ | --- >+ | - error: collation does not support alter >+ | ... >+ >+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >+ | --- >+ | ... >+ >+box.internal.collation.create('test', 'ICU', 'ru_RU') >+ | --- >+ | ... >+box.internal.collation.exists('test') >+ | --- >+ | - true >+ | ... >+ >+test_run:cmd('restart server default') >+ | >+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >+ | --- >+ | ... >+ >+box.internal.collation.exists('test') >+ | --- >+ | - true >+ | ... >+box.internal.collation.drop('test') >+ | --- >+ | ... >+ >+box.space._collation:auto_increment{'test'} >+ | --- >+ | - error: Tuple field 3 required by space format is missing >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU'} >+ | --- >+ | - error: Tuple field 5 required by space format is missing >+ | ... >+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >+ | --- >+ | - error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >+ | ... >+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >+ | --- >+ | - error: 'Tuple field 2 type does not match one required by operation: expected string' >+ | ... >+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >+ | --- >+ | - error: 'Tuple field 4 type does not match one required by operation: expected string' >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >+ | --- >+ | - error: 'Tuple field 5 type does not match one required by operation: expected string' >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >+ | --- >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >+ | --- >+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >+ | ... >+box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >+box.space._collation.index.name:delete{'nothing'} -- allowed >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >+ | --- >+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >+ | --- >+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >+ | --- >+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >+ | ... >+opts = {normalization_mode='NORMAL'} >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >+ | expected ON | OFF.' >+ | ... >+opts.normalization_mode = 'OFF' >+ | --- >+ | ... >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >+ | --- >+ | ... >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | ... >+opts.numeric_collation = 'PERL' >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >+ | expected ON | OFF.' >+ | ... >+opts.numeric_collation = 'ON' >+ | --- >+ | ... >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+ | --- >+ | ... >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | ... >+opts.alternate_handling1 = 'ON' >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >+ | ... >+opts.alternate_handling1 = nil >+ | --- >+ | ... >+opts.alternate_handling = 'ON' >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >+ | expected NON_IGNORABLE | SHIFTED.' >+ | ... >+opts.alternate_handling = 'SHIFTED' >+ | --- >+ | ... >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+ | --- >+ | ... >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | ... >+opts.case_first = 'ON' >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >+ | OFF | UPPER_FIRST | LOWER_FIRST.' >+ | ... >+opts.case_first = 'OFF' >+ | --- >+ | ... >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+ | --- >+ | ... >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | ... >+opts.case_level = 'UPPER' >+ | --- >+ | ... >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >+ | ON | OFF.' >+ | ... >+opts.case_level = 'DEFAULT' >+ | --- >+ | ... >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+ | --- >+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >+ | ON | OFF.' >+ | ... >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ | --- >+ | ... >+ >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >+ | --- >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >+box.space._collation:select{} >+ | --- >+ | - - [0, 'none', 1, 'BINARY', '', {}] >+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >+ | - [3, 'binary', 1, 'BINARY', '', {}] >+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >+test_run:cmd('restart server default') >+ | >+box.space._collation:select{} >+ | --- >+ | - - [0, 'none', 1, 'BINARY', '', {}] >+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >+ | - [3, 'binary', 1, 'BINARY', '', {}] >+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >+box.space._collation.index.name:delete{'test'} >+ | --- >+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >+ | ... >diff --git a/test/box/ddl_collation.test.lua b/test/box/ddl_collation.test.lua >new file mode 100644 >index 000000000..ee26af9c6 >--- /dev/null >+++ b/test/box/ddl_collation.test.lua >@@ -0,0 +1,90 @@ >+env = require('test_run') >+test_run = env.new() >+ >+-- collation >+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >+ >+box.internal.collation.create('test') >+box.internal.collation.create('test', 'ICU') >+box.internal.collation.create(42, 'ICU', 'ru_RU') >+box.internal.collation.create('test', 42, 'ru_RU') >+box.internal.collation.create('test', 'ICU', 42) >+box.internal.collation.create('test', 'nothing', 'ru_RU') >+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >+box.internal.collation.create('test', 'ICU', 'ru_RU') >+box.internal.collation.drop('test') >+box.internal.collation.drop('nothing') -- allowed >+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >+box.internal.collation.drop('test') --ok >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >+box.internal.collation.drop('test') --ok >+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >+box.internal.collation.drop('test') --ok >+c = box.space._collation:get{1}:totable() >+c[2] = 'unicode_test' >+box.space._collation:replace(c) >+ >+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >+ >+box.internal.collation.create('test', 'ICU', 'ru_RU') >+box.internal.collation.exists('test') >+ >+test_run:cmd('restart server default') >+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >+ >+box.internal.collation.exists('test') >+box.internal.collation.drop('test') >+ >+box.space._collation:auto_increment{'test'} >+box.space._collation:auto_increment{'test', 0, 'ICU'} >+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >+box.space._collation.index.name:delete{'test'} -- ok >+box.space._collation.index.name:delete{'nothing'} -- allowed >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >+opts = {normalization_mode='NORMAL'} >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.normalization_mode = 'OFF' >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >+_ = box.space._collation.index.name:delete{'test'} -- ok >+opts.numeric_collation = 'PERL' >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.numeric_collation = 'ON' >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+_ = box.space._collation.index.name:delete{'test'} -- ok >+opts.alternate_handling1 = 'ON' >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.alternate_handling1 = nil >+opts.alternate_handling = 'ON' >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.alternate_handling = 'SHIFTED' >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+_ = box.space._collation.index.name:delete{'test'} -- ok >+opts.case_first = 'ON' >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.case_first = 'OFF' >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+_ = box.space._collation.index.name:delete{'test'} -- ok >+opts.case_level = 'UPPER' >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >+opts.case_level = 'DEFAULT' >+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >+_ = box.space._collation.index.name:delete{'test'} -- ok >+ >+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >+box.space._collation:select{} >+test_run:cmd('restart server default') >+box.space._collation:select{} >+box.space._collation.index.name:delete{'test'} >diff --git a/test/box/ddl_collation_types.result b/test/box/ddl_collation_types.result >new file mode 100644 >index 000000000..7eaef62c0 >--- /dev/null >+++ b/test/box/ddl_collation_types.result >@@ -0,0 +1,21 @@ >+-- test-run result file version 2 >+-- Check that collation is allowed only for strings, scalar and any types. >+format = {} >+ | --- >+ | ... >+format[1] = {'field1', 'unsigned', collation = 'unicode'} >+ | --- >+ | ... >+s = box.schema.create_space('test', {format = format}) >+ | --- >+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >+ | scalar and any fields' >+ | ... >+format[1] = {'field2', 'array', collation = 'unicode_ci'} >+ | --- >+ | ... >+s = box.schema.create_space('test', {format = format}) >+ | --- >+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >+ | scalar and any fields' >+ | ... >diff --git a/test/box/ddl_collation_types.test.lua b/test/box/ddl_collation_types.test.lua >new file mode 100644 >index 000000000..5930d54b0 >--- /dev/null >+++ b/test/box/ddl_collation_types.test.lua >@@ -0,0 +1,6 @@ >+-- Check that collation is allowed only for strings, scalar and any types. >+format = {} >+format[1] = {'field1', 'unsigned', collation = 'unicode'} >+s = box.schema.create_space('test', {format = format}) >+format[1] = {'field2', 'array', collation = 'unicode_ci'} >+s = box.schema.create_space('test', {format = format}) >diff --git a/test/box/ddl_collation_wrong_id.result b/test/box/ddl_collation_wrong_id.result >new file mode 100644 >index 000000000..c6cf058b1 >--- /dev/null >+++ b/test/box/ddl_collation_wrong_id.result >@@ -0,0 +1,21 @@ >+-- test-run result file version 2 >+-- Check that error is raised when collation with wrong id is used. >+_space = box.space[box.schema.SPACE_ID] >+ | --- >+ | ... >+utils = require('utils') >+ | --- >+ | ... >+EMPTY_MAP = utils.setmap({}) >+ | --- >+ | ... >+format = {{name = 'field1', type = 'string', collation = 666}} >+ | --- >+ | ... >+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >+ | --- >+ | ... >+_space:insert(surrogate_space) >+ | --- >+ | - error: 'Wrong collation options (field 1): collation was not found by ID' >+ | ... >diff --git a/test/box/ddl_collation_wrong_id.test.lua b/test/box/ddl_collation_wrong_id.test.lua >new file mode 100644 >index 000000000..8d28d3ee1 >--- /dev/null >+++ b/test/box/ddl_collation_wrong_id.test.lua >@@ -0,0 +1,7 @@ >+-- Check that error is raised when collation with wrong id is used. >+_space = box.space[box.schema.SPACE_ID] >+utils = require('utils') >+EMPTY_MAP = utils.setmap({}) >+format = {{name = 'field1', type = 'string', collation = 666}} >+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >+_space:insert(surrogate_space) >diff --git a/test/box/ddl_no_collation.result b/test/box/ddl_no_collation.result >new file mode 100644 >index 000000000..6f4e8fa0b >--- /dev/null >+++ b/test/box/ddl_no_collation.result >@@ -0,0 +1,12 @@ >+-- test-run result file version 2 >+-- Check that error is raised when collation doesn't exists. >+format = {} >+ | --- >+ | ... >+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >+ | --- >+ | ... >+s = box.schema.create_space('test', {format = format}) >+ | --- >+ | - error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >+ | ... >diff --git a/test/box/ddl_no_collation.test.lua b/test/box/ddl_no_collation.test.lua >new file mode 100644 >index 000000000..3e411373b >--- /dev/null >+++ b/test/box/ddl_no_collation.test.lua >@@ -0,0 +1,4 @@ >+-- Check that error is raised when collation doesn't exists. >+format = {} >+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >+s = box.schema.create_space('test', {format = format}) >diff --git a/test/box/ddl_parallel.result b/test/box/ddl_parallel.result >new file mode 100644 >index 000000000..dfa4a1422 >--- /dev/null >+++ b/test/box/ddl_parallel.result >@@ -0,0 +1,61 @@ >+-- test-run result file version 2 >+env = require('test_run') >+ | --- >+ | ... >+test_run = env.new() >+ | --- >+ | ... >+ >+fiber = require'fiber' >+ | --- >+ | ... >+ >+-- simple test for parallel ddl execution >+_ = box.schema.space.create('test'):create_index('pk') >+ | --- >+ | ... >+ >+ch = fiber.channel(2) >+ | --- >+ | ... >+ >+test_run:cmd("setopt delimiter ';'") >+ | --- >+ | - true >+ | ... >+ >+function f1() >+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >+ ch:put(true) >+end; >+ | --- >+ | ... >+ >+function f2() >+ box.space.test:create_index('third', {parts = {3, 'string'}}) >+ ch:put(true) >+end; >+ | --- >+ | ... >+ >+test_run:cmd("setopt delimiter ''"); >+ | --- >+ | - true >+ | ... >+ >+_ = {fiber.create(f1), fiber.create(f2)} >+ | --- >+ | ... >+ >+ch:get() >+ | --- >+ | - true >+ | ... >+ch:get() >+ | --- >+ | - true >+ | ... >+ >+_ = box.space.test:drop() >+ | --- >+ | ... >diff --git a/test/box/ddl_parallel.test.lua b/test/box/ddl_parallel.test.lua >new file mode 100644 >index 000000000..99c3bfdcc >--- /dev/null >+++ b/test/box/ddl_parallel.test.lua >@@ -0,0 +1,30 @@ >+env = require('test_run') >+test_run = env.new() >+ >+fiber = require'fiber' >+ >+-- simple test for parallel ddl execution >+_ = box.schema.space.create('test'):create_index('pk') >+ >+ch = fiber.channel(2) >+ >+test_run:cmd("setopt delimiter ';'") >+ >+function f1() >+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >+ ch:put(true) >+end; >+ >+function f2() >+ box.space.test:create_index('third', {parts = {3, 'string'}}) >+ ch:put(true) >+end; >+ >+test_run:cmd("setopt delimiter ''"); >+ >+_ = {fiber.create(f1), fiber.create(f2)} >+ >+ch:get() >+ch:get() >+ >+_ = box.space.test:drop() >diff --git a/test/box/ddl_tuple.result b/test/box/ddl_tuple.result >new file mode 100644 >index 000000000..6a024a833 >--- /dev/null >+++ b/test/box/ddl_tuple.result >@@ -0,0 +1,67 @@ >+-- test-run result file version 2 >+env = require('test_run') >+ | --- >+ | ... >+test_run = env.new() >+ | --- >+ | ... >+ >+fiber = require'fiber' >+ | --- >+ | ... >+ch = fiber.channel(3) >+ | --- >+ | ... >+ >+_ = box.schema.space.create('test'):create_index('pk') >+ | --- >+ | ... >+ >+test_run:cmd("setopt delimiter ';'") >+ | --- >+ | - true >+ | ... >+function add_index() >+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >+ ch:put(true) >+end; >+ | --- >+ | ... >+ >+function insert_tuple(tuple) >+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >+end; >+ | --- >+ | ... >+test_run:cmd("setopt delimiter ''"); >+ | --- >+ | - true >+ | ... >+ >+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >+ | --- >+ | ... >+{ch:get(), ch:get(), ch:get()} >+ | --- >+ | - - - false >+ | - 'Tuple field 2 type does not match one required by operation: expected unsigned' >+ | - - true >+ | - [1, 2, 'a'] >+ | - true >+ | ... >+ >+box.space.test:select() >+ | --- >+ | - - [1, 2, 'a'] >+ | ... >+ >+test_run:cmd('restart server default') >+ | >+ >+box.space.test:select() >+ | --- >+ | - - [1, 2, 'a'] >+ | ... >+box.space.test:drop() >+ | --- >+ | ... >diff --git a/test/box/ddl_tuple.test.lua b/test/box/ddl_tuple.test.lua >new file mode 100644 >index 000000000..1c78a00e4 >--- /dev/null >+++ b/test/box/ddl_tuple.test.lua >@@ -0,0 +1,28 @@ >+env = require('test_run') >+test_run = env.new() >+ >+fiber = require'fiber' >+ch = fiber.channel(3) >+ >+_ = box.schema.space.create('test'):create_index('pk') >+ >+test_run:cmd("setopt delimiter ';'") >+function add_index() >+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >+ ch:put(true) >+end; >+ >+function insert_tuple(tuple) >+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >+end; >+test_run:cmd("setopt delimiter ''"); >+ >+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >+{ch:get(), ch:get(), ch:get()} >+ >+box.space.test:select() >+ >+test_run:cmd('restart server default') >+ >+box.space.test:select() >+box.space.test:drop() >diff --git a/test/box/gh-2336-ddl_call_twice.result b/test/box/gh-2336-ddl_call_twice.result >new file mode 100644 >index 000000000..0f55c9c09 >--- /dev/null >+++ b/test/box/gh-2336-ddl_call_twice.result >@@ -0,0 +1,44 @@ >+-- test-run result file version 2 >+-- gh-2336 crash if format called twice during snapshot >+fiber = require'fiber' >+ | --- >+ | ... >+ >+space = box.schema.space.create('test_format') >+ | --- >+ | ... >+_ = space:create_index('pk', { parts = { 1,'str' }}) >+ | --- >+ | ... >+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >+ | --- >+ | ... >+str = string.rep("t",1024) >+ | --- >+ | ... >+for i = 1, 10000 do space:insert{tostring(i), str} end >+ | --- >+ | ... >+ch = fiber.channel(3) >+ | --- >+ | ... >+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >+ | --- >+ | ... >+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >+ | --- >+ | ... >+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >+ | --- >+ | ... >+ >+{ch:get(), ch:get(), ch:get()} >+ | --- >+ | - - true >+ | - true >+ | - true >+ | ... >+ >+space:drop() >+ | --- >+ | ... >diff --git a/test/box/gh-2336-ddl_call_twice.test.lua b/test/box/gh-2336-ddl_call_twice.test.lua >new file mode 100644 >index 000000000..f92afc211 >--- /dev/null >+++ b/test/box/gh-2336-ddl_call_twice.test.lua >@@ -0,0 +1,16 @@ >+-- gh-2336 crash if format called twice during snapshot >+fiber = require'fiber' >+ >+space = box.schema.space.create('test_format') >+_ = space:create_index('pk', { parts = { 1,'str' }}) >+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >+str = string.rep("t",1024) >+for i = 1, 10000 do space:insert{tostring(i), str} end >+ch = fiber.channel(3) >+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >+ >+{ch:get(), ch:get(), ch:get()} >+ >+space:drop() >diff --git a/test/box/gh-2783-ddl_lock.result b/test/box/gh-2783-ddl_lock.result >new file mode 100644 >index 000000000..7b3ba3444 >--- /dev/null >+++ b/test/box/gh-2783-ddl_lock.result >@@ -0,0 +1,62 @@ >+-- test-run result file version 2 >+env = require('test_run') >+ | --- >+ | ... >+test_run = env.new() >+ | --- >+ | ... >+ >+-- >+-- gh-2783 >+-- A ddl operation shoud fail before trying to lock a ddl latch >+-- in a multi-statement transaction. >+-- If operation tries to lock already an locked latch then the >+-- current transaction will be silently rolled back under our feet. >+-- This is confusing. So check for multi-statement transaction >+-- before locking the latch. >+-- >+test_latch = box.schema.space.create('test_latch') >+ | --- >+ | ... >+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >+ | --- >+ | ... >+fiber = require('fiber') >+ | --- >+ | ... >+c = fiber.channel(1) >+ | --- >+ | ... >+test_run:cmd("setopt delimiter ';'") >+ | --- >+ | - true >+ | ... >+_ = fiber.create(function() >+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >+ c:put(true) >+end); >+ | --- >+ | ... >+ >+-- Should be Ok for now >+box.begin() >+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >+box.commit(); >+ | --- >+ | ... >+test_run:cmd("setopt delimiter ''"); >+ | --- >+ | - true >+ | ... >+-- Explicitly roll back the transaction in multi-statement, >+-- which hasn't finished due to DDL error >+box.rollback() >+ | --- >+ | ... >+ >+_ = c:get() >+ | --- >+ | ... >+test_latch:drop() -- this is where everything stops >+ | --- >+ | ... >diff --git a/test/box/gh-2783-ddl_lock.test.lua b/test/box/gh-2783-ddl_lock.test.lua >new file mode 100644 >index 000000000..953e177a7 >--- /dev/null >+++ b/test/box/gh-2783-ddl_lock.test.lua >@@ -0,0 +1,33 @@ >+env = require('test_run') >+test_run = env.new() >+ >+-- >+-- gh-2783 >+-- A ddl operation shoud fail before trying to lock a ddl latch >+-- in a multi-statement transaction. >+-- If operation tries to lock already an locked latch then the >+-- current transaction will be silently rolled back under our feet. >+-- This is confusing. So check for multi-statement transaction >+-- before locking the latch. >+-- >+test_latch = box.schema.space.create('test_latch') >+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >+fiber = require('fiber') >+c = fiber.channel(1) >+test_run:cmd("setopt delimiter ';'") >+_ = fiber.create(function() >+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >+ c:put(true) >+end); >+ >+-- Should be Ok for now >+box.begin() >+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >+box.commit(); >+test_run:cmd("setopt delimiter ''"); >+-- Explicitly roll back the transaction in multi-statement, >+-- which hasn't finished due to DDL error >+box.rollback() >+ >+_ = c:get() >+test_latch:drop() -- this is where everything stops >diff --git a/test/box/gh-2839-ddl_custom_fields.result b/test/box/gh-2839-ddl_custom_fields.result >new file mode 100644 >index 000000000..3846fe08e >--- /dev/null >+++ b/test/box/gh-2839-ddl_custom_fields.result >@@ -0,0 +1,26 @@ >+-- test-run result file version 2 >+-- >+-- gh-2839: allow to store custom fields in field definition. >+-- >+format = {} >+ | --- >+ | ... >+format[1] = {name = 'field1', type = 'unsigned'} >+ | --- >+ | ... >+format[2] = {'field2', 'unsigned'} >+ | --- >+ | ... >+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >+ | --- >+ | ... >+s = box.schema.create_space('test', {format = format}) >+ | --- >+ | ... >+s:format()[3].custom_field >+ | --- >+ | - custom_value >+ | ... >+s:drop() >+ | --- >+ | ... >diff --git a/test/box/gh-2839-ddl_custom_fields.test.lua b/test/box/gh-2839-ddl_custom_fields.test.lua >new file mode 100644 >index 000000000..e1c0e2a0b >--- /dev/null >+++ b/test/box/gh-2839-ddl_custom_fields.test.lua >@@ -0,0 +1,10 @@ >+-- >+-- gh-2839: allow to store custom fields in field definition. >+-- >+format = {} >+format[1] = {name = 'field1', type = 'unsigned'} >+format[2] = {'field2', 'unsigned'} >+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >+s = box.schema.create_space('test', {format = format}) >+s:format()[3].custom_field >+s:drop() >diff --git a/test/box/gh-2937-ddl_collation_field_def.result b/test/box/gh-2937-ddl_collation_field_def.result >new file mode 100644 >index 000000000..8b3de607e >--- /dev/null >+++ b/test/box/gh-2937-ddl_collation_field_def.result >@@ -0,0 +1,27 @@ >+-- test-run result file version 2 >+-- >+-- gh-2937: allow to specify collation in field definition. >+-- >+format = {} >+ | --- >+ | ... >+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >+ | --- >+ | ... >+format[2] = {'field2', 'any', collation = 'unicode_ci'} >+ | --- >+ | ... >+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >+ | --- >+ | ... >+s = box.schema.create_space('test', {format = format}) >+ | --- >+ | ... >+s:format() >+ | --- >+ | - [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >+ | 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >+ | ... >+s:drop() >+ | --- >+ | ... >diff --git a/test/box/gh-2937-ddl_collation_field_def.test.lua b/test/box/gh-2937-ddl_collation_field_def.test.lua >new file mode 100644 >index 000000000..1ddfa7246 >--- /dev/null >+++ b/test/box/gh-2937-ddl_collation_field_def.test.lua >@@ -0,0 +1,10 @@ >+-- >+-- gh-2937: allow to specify collation in field definition. >+-- >+format = {} >+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >+format[2] = {'field2', 'any', collation = 'unicode_ci'} >+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >+s = box.schema.create_space('test', {format = format}) >+s:format() >+s:drop() >diff --git a/test/box/gh-3290-ddl_collation_deleted.result b/test/box/gh-3290-ddl_collation_deleted.result >new file mode 100644 >index 000000000..eb59b6c1d >--- /dev/null >+++ b/test/box/gh-3290-ddl_collation_deleted.result >@@ -0,0 +1,16 @@ >+-- test-run result file version 2 >+-- >+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >+-- must work even if a collation is deleted from _collation. >+-- >+t = box.space._collation:delete{1} >+ | --- >+ | ... >+utf8.cmp('abc', 'def') >+ | --- >+ | - -1 >+ | ... >+box.space._collation:replace(t) >+ | --- >+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >+ | ... >diff --git a/test/box/gh-3290-ddl_collation_deleted.test.lua b/test/box/gh-3290-ddl_collation_deleted.test.lua >new file mode 100644 >index 000000000..5fd3d7e1a >--- /dev/null >+++ b/test/box/gh-3290-ddl_collation_deleted.test.lua >@@ -0,0 +1,7 @@ >+-- >+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >+-- must work even if a collation is deleted from _collation. >+-- >+t = box.space._collation:delete{1} >+utf8.cmp('abc', 'def') >+box.space._collation:replace(t) >diff --git a/test/box/gh-928-ddl_truncate.result b/test/box/gh-928-ddl_truncate.result >new file mode 100644 >index 000000000..f244e07f1 >--- /dev/null >+++ b/test/box/gh-928-ddl_truncate.result >@@ -0,0 +1,35 @@ >+-- test-run result file version 2 >+fiber = require'fiber' >+ | --- >+ | ... >+ch = fiber.channel(2) >+ | --- >+ | ... >+ >+--issue #928 >+space = box.schema.space.create('test_trunc') >+ | --- >+ | ... >+_ = space:create_index('pk') >+ | --- >+ | ... >+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >+ | --- >+ | ... >+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >+ | --- >+ | ... >+ >+function test_trunc() space:truncate() ch:put(true) end >+ | --- >+ | ... >+ >+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >+ | --- >+ | ... >+_ = {ch:get(), ch:get()} >+ | --- >+ | ... >+space:drop() >+ | --- >+ | ... >diff --git a/test/box/gh-928-ddl_truncate.test.lua b/test/box/gh-928-ddl_truncate.test.lua >new file mode 100644 >index 000000000..10be8c361 >--- /dev/null >+++ b/test/box/gh-928-ddl_truncate.test.lua >@@ -0,0 +1,14 @@ >+fiber = require'fiber' >+ch = fiber.channel(2) >+ >+--issue #928 >+space = box.schema.space.create('test_trunc') >+_ = space:create_index('pk') >+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >+ >+function test_trunc() space:truncate() ch:put(true) end >+ >+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >+_ = {ch:get(), ch:get()} >+space:drop() >-- >2.17.1 > -- Oleg Piskunov [-- Attachment #2: Type: text/html, Size: 153920 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test 2020-03-18 12:06 ` Oleg Piskunov @ 2020-03-19 13:50 ` Alexander Tikhonov 2020-03-20 8:40 ` Oleg Piskunov 2020-03-24 8:02 ` Sergey Bronnikov 0 siblings, 2 replies; 6+ messages in thread From: Alexander Tikhonov @ 2020-03-19 13:50 UTC (permalink / raw) To: Oleg Piskunov; +Cc: tarantool-patches [-- Attachment #1: Type: text/plain, Size: 150190 bytes --] Hi, Oleg, I’ve rechecked all the tests and didn’t find any used way to cleanup the fibers at the tests finish. I’ll suggest to discuss it in the future changes, but not mess with the current tests splitting. >Среда, 18 марта 2020, 15:06 +03:00 от Oleg Piskunov <o.piskunov@tarantool.org>: > > >Hi, > >Sasha, need to cleanup fibers in next tests: > >test/box/ddl_parallel.test.lua >test/box/ddl_tuple.test.lua >test/box/gh-2336-ddl_call_twice.test.lua >test/box/gh-2783-ddl_lock.test.lua >test/box/gh-928-ddl_truncate.test.lua Not needed in the current patch. > >Unused fibers in next tests: > >test/box/gh-822_net.box.test.lua > Was already removed in V2, please check if you mentioned correct test. > >>Среда, 18 марта 2020, 13:37 +03:00 от Alexander V. Tikhonov < avtikhon@tarantool.org >: >> >>Divided into tests: >>- box/ddl_alter.test.lua >>- box/ddl_collation.test.lua >>- box/ddl_collation_types.test.lua >>- box/ddl_collation_wrong_id.test.lua >>- box/ddl_no_collation.test.lua >>- box/ddl_parallel.test.lua >>- box/ddl_tuple.test.lua >>- box/gh-2336-ddl_call_twice.test.lua >>- box/gh-2783-ddl_lock.test.lua >>- box/gh-2839-ddl_custom_fields.test.lua >>- box/gh-2937-ddl_collation_field_def.test.lua >>- box/gh-3290-ddl_collation_deleted.test.lua >>- box/gh-928-ddl_truncate.test.lua >>--- >> >>Github: https://github.com/tarantool/tarantool/tree/avtikhon/divide_tests >> >> test/box/ddl.result | 1210 ----------------- >> test/box/ddl.test.lua | 272 ---- >> test/box/ddl_alter.result | 30 + >> test/box/ddl_alter.test.lua | 9 + >> test/box/ddl_collation.result | 853 ++++++++++++ >> test/box/ddl_collation.test.lua | 90 ++ >> test/box/ddl_collation_types.result | 21 + >> test/box/ddl_collation_types.test.lua | 6 + >> test/box/ddl_collation_wrong_id.result | 21 + >> test/box/ddl_collation_wrong_id.test.lua | 7 + >> test/box/ddl_no_collation.result | 12 + >> test/box/ddl_no_collation.test.lua | 4 + >> test/box/ddl_parallel.result | 61 + >> test/box/ddl_parallel.test.lua | 30 + >> test/box/ddl_tuple.result | 67 + >> test/box/ddl_tuple.test.lua | 28 + >> test/box/gh-2336-ddl_call_twice.result | 44 + >> test/box/gh-2336-ddl_call_twice.test.lua | 16 + >> test/box/gh-2783-ddl_lock.result | 62 + >> test/box/gh-2783-ddl_lock.test.lua | 33 + >> test/box/gh-2839-ddl_custom_fields.result | 26 + >> test/box/gh-2839-ddl_custom_fields.test.lua | 10 + >> .../gh-2937-ddl_collation_field_def.result | 27 + >> .../gh-2937-ddl_collation_field_def.test.lua | 10 + >> test/box/gh-3290-ddl_collation_deleted.result | 16 + >> .../gh-3290-ddl_collation_deleted.test.lua | 7 + >> test/box/gh-928-ddl_truncate.result | 35 + >> test/box/gh-928-ddl_truncate.test.lua | 14 + >> 28 files changed, 1539 insertions(+), 1482 deletions(-) >> delete mode 100644 test/box/ddl.result >> delete mode 100644 test/box/ddl.test.lua >> create mode 100644 test/box/ddl_alter.result >> create mode 100644 test/box/ddl_alter.test.lua >> create mode 100644 test/box/ddl_collation.result >> create mode 100644 test/box/ddl_collation.test.lua >> create mode 100644 test/box/ddl_collation_types.result >> create mode 100644 test/box/ddl_collation_types.test.lua >> create mode 100644 test/box/ddl_collation_wrong_id.result >> create mode 100644 test/box/ddl_collation_wrong_id.test.lua >> create mode 100644 test/box/ddl_no_collation.result >> create mode 100644 test/box/ddl_no_collation.test.lua >> create mode 100644 test/box/ddl_parallel.result >> create mode 100644 test/box/ddl_parallel.test.lua >> create mode 100644 test/box/ddl_tuple.result >> create mode 100644 test/box/ddl_tuple.test.lua >> create mode 100644 test/box/gh-2336-ddl_call_twice.result >> create mode 100644 test/box/gh-2336-ddl_call_twice.test.lua >> create mode 100644 test/box/gh-2783-ddl_lock.result >> create mode 100644 test/box/gh-2783-ddl_lock.test.lua >> create mode 100644 test/box/gh-2839-ddl_custom_fields.result >> create mode 100644 test/box/gh-2839-ddl_custom_fields.test.lua >> create mode 100644 test/box/gh-2937-ddl_collation_field_def.result >> create mode 100644 test/box/gh-2937-ddl_collation_field_def.test.lua >> create mode 100644 test/box/gh-3290-ddl_collation_deleted.result >> create mode 100644 test/box/gh-3290-ddl_collation_deleted.test.lua >> create mode 100644 test/box/gh-928-ddl_truncate.result >> create mode 100644 test/box/gh-928-ddl_truncate.test.lua >> >>diff --git a/test/box/ddl.result b/test/box/ddl.result >>deleted file mode 100644 >>index b995b1493..000000000 >>--- a/test/box/ddl.result >>+++ /dev/null >>@@ -1,1210 +0,0 @@ >>-env = require('test_run') >>---- >>-... >>-test_run = env.new() >>---- >>-... >>-fiber = require'fiber' >>---- >>-... >>--- simple test for parallel ddl execution >>-_ = box.schema.space.create('test'):create_index('pk') >>---- >>-... >>-ch = fiber.channel(2) >>---- >>-... >>-test_run:cmd("setopt delimiter ';'") >>---- >>-- true >>-... >>-function f1() >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>- ch:put(true) >>-end; >>---- >>-... >>-function f2() >>- box.space.test:create_index('third', {parts = {3, 'string'}}) >>- ch:put(true) >>-end; >>---- >>-... >>-test_run:cmd("setopt delimiter ''"); >>---- >>-- true >>-... >>-_ = {fiber.create(f1), fiber.create(f2)} >>---- >>-... >>-ch:get() >>---- >>-- true >>-... >>-ch:get() >>---- >>-- true >>-... >>-_ = box.space.test:drop() >>---- >>-... >>-test_run:cmd('restart server default') >>-env = require('test_run') >>---- >>-... >>-test_run = env.new() >>---- >>-... >>-fiber = require'fiber' >>---- >>-... >>-ch = fiber.channel(2) >>---- >>-... >>---issue #928 >>-space = box.schema.space.create('test_trunc') >>---- >>-... >>-_ = space:create_index('pk') >>---- >>-... >>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>---- >>-... >>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>---- >>-... >>-function test_trunc() space:truncate() ch:put(true) end >>---- >>-... >>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>---- >>-... >>-_ = {ch:get(), ch:get()} >>---- >>-... >>-space:drop() >>---- >>-... >>--- index should not crash after alter >>-space = box.schema.space.create('test_swap') >>---- >>-... >>-index = space:create_index('pk') >>---- >>-... >>-space:replace({1, 2, 3}) >>---- >>-- [1, 2, 3] >>-... >>-index:rename('primary') >>---- >>-... >>-index2 = space:create_index('sec') >>---- >>-... >>-space:replace({2, 3, 1}) >>---- >>-- [2, 3, 1] >>-... >>-space:select() >>---- >>-- - [1, 2, 3] >>- - [2, 3, 1] >>-... >>-space:drop() >>---- >>-... >>-ch = fiber.channel(3) >>---- >>-... >>-_ = box.schema.space.create('test'):create_index('pk') >>---- >>-... >>-test_run:cmd("setopt delimiter ';'") >>---- >>-- true >>-... >>-function add_index() >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>- ch:put(true) >>-end; >>---- >>-... >>-function insert_tuple(tuple) >>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>-end; >>---- >>-... >>-test_run:cmd("setopt delimiter ''"); >>---- >>-- true >>-... >>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>---- >>-... >>-{ch:get(), ch:get(), ch:get()} >>---- >>-- - - false >>- - 'Tuple field 2 type does not match one required by operation: expected unsigned' >>- - - true >>- - [1, 2, 'a'] >>- - true >>-... >>-box.space.test:select() >>---- >>-- - [1, 2, 'a'] >>-... >>-test_run:cmd('restart server default') >>-box.space.test:select() >>---- >>-- - [1, 2, 'a'] >>-... >>-box.space.test:drop() >>---- >>-... >>--- gh-2336 crash if format called twice during snapshot >>-fiber = require'fiber' >>---- >>-... >>-space = box.schema.space.create('test_format') >>---- >>-... >>-_ = space:create_index('pk', { parts = { 1,'str' }}) >>---- >>-... >>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>---- >>-... >>-str = string.rep("t",1024) >>---- >>-... >>-for i = 1, 10000 do space:insert{tostring(i), str} end >>---- >>-... >>-ch = fiber.channel(3) >>---- >>-... >>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>---- >>-... >>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>---- >>-... >>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>---- >>-... >>-{ch:get(), ch:get(), ch:get()} >>---- >>-- - true >>- - true >>- - true >>-... >>-space:drop() >>---- >>-... >>--- collation >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>---- >>-... >>-box.internal.collation.create('test') >>---- >>-- error: Illegal parameters, type (second arg) must be a string >>-... >>-box.internal.collation.create('test', 'ICU') >>---- >>-- error: Illegal parameters, locale (third arg) must be a string >>-... >>-box.internal.collation.create(42, 'ICU', 'ru_RU') >>---- >>-- error: Illegal parameters, name (first arg) must be a string >>-... >>-box.internal.collation.create('test', 42, 'ru_RU') >>---- >>-- error: Illegal parameters, type (second arg) must be a string >>-... >>-box.internal.collation.create('test', 'ICU', 42) >>---- >>-- error: Illegal parameters, locale (third arg) must be a string >>-... >>-box.internal.collation.create('test', 'nothing', 'ru_RU') >>---- >>-- error: 'Failed to initialize collation: unknown collation type.' >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>---- >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>---- >>-- error: Duplicate key exists in unique index 'name' in space '_collation' >>-... >>-box.internal.collation.drop('test') >>---- >>-... >>-box.internal.collation.drop('nothing') -- allowed >>---- >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>---- >>-- error: Illegal parameters, options (fourth arg) must be a table or nil >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>---- >>-- error: Illegal parameters, options (fourth arg) must be a table or nil >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>---- >>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>---- >>-- error: 'Failed to initialize collation: ICU wrong french_collation option setting, >>- expected ON | OFF.' >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>---- >>-... >>-box.internal.collation.drop('test') --ok >>---- >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>---- >>-- error: 'Failed to initialize collation: ICU wrong strength option setting, expected >>- PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>---- >>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>---- >>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >>-... >>-box.internal.collation.drop('test') --ok >>---- >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>---- >>-... >>-box.internal.collation.drop('test') --ok >>---- >>-... >>-c = box.space._collation:get{1}:totable() >>---- >>-... >>-c[2] = 'unicode_test' >>---- >>-... >>-box.space._collation:replace(c) >>---- >>-- error: collation does not support alter >>-... >>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>---- >>-... >>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>---- >>-... >>-box.internal.collation.exists('test') >>---- >>-- true >>-... >>-test_run:cmd('restart server default') >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>---- >>-... >>-box.internal.collation.exists('test') >>---- >>-- true >>-... >>-box.internal.collation.drop('test') >>---- >>-... >>-box.space._collation:auto_increment{'test'} >>---- >>-- error: Tuple field 3 required by space format is missing >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU'} >>---- >>-- error: Tuple field 5 required by space format is missing >>-... >>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>---- >>-- error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >>-... >>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>---- >>-- error: 'Tuple field 2 type does not match one required by operation: expected string' >>-... >>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>---- >>-- error: 'Tuple field 4 type does not match one required by operation: expected string' >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>---- >>-- error: 'Tuple field 5 type does not match one required by operation: expected string' >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>---- >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>---- >>-- error: Duplicate key exists in unique index 'name' in space '_collation' >>-... >>-box.space._collation.index.name:delete{'test'} -- ok >>---- >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>-box.space._collation.index.name:delete{'nothing'} -- allowed >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>---- >>-- error: 'Tuple field 6 type does not match one required by operation: expected map' >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>---- >>-- error: 'Tuple field 6 type does not match one required by operation: expected map' >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>---- >>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >>-... >>-opts = {normalization_mode='NORMAL'} >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >>- expected ON | OFF.' >>-... >>-opts.normalization_mode = 'OFF' >>---- >>-... >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>---- >>-... >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>---- >>-... >>-opts.numeric_collation = 'PERL' >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >>- expected ON | OFF.' >>-... >>-opts.numeric_collation = 'ON' >>---- >>-... >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>---- >>-... >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>---- >>-... >>-opts.alternate_handling1 = 'ON' >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >>-... >>-opts.alternate_handling1 = nil >>---- >>-... >>-opts.alternate_handling = 'ON' >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >>- expected NON_IGNORABLE | SHIFTED.' >>-... >>-opts.alternate_handling = 'SHIFTED' >>---- >>-... >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>---- >>-... >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>---- >>-... >>-opts.case_first = 'ON' >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >>- OFF | UPPER_FIRST | LOWER_FIRST.' >>-... >>-opts.case_first = 'OFF' >>---- >>-... >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>---- >>-... >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>---- >>-... >>-opts.case_level = 'UPPER' >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>---- >>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>- ON | OFF.' >>-... >>-opts.case_level = 'DEFAULT' >>---- >>-... >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>---- >>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>- ON | OFF.' >>-... >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>---- >>-... >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>---- >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>-box.space._collation:select{} >>---- >>-- - [0, 'none', 1, 'BINARY', '', {}] >>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>- - [3, 'binary', 1, 'BINARY', '', {}] >>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>-test_run:cmd('restart server default') >>-box.space._collation:select{} >>---- >>-- - [0, 'none', 1, 'BINARY', '', {}] >>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>- - [3, 'binary', 1, 'BINARY', '', {}] >>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>-box.space._collation.index.name:delete{'test'} >>---- >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>-... >>--- >>--- gh-3290: expose ICU into Lua. It uses built-in collations, that >>--- must work even if a collation is deleted from _collation. >>--- >>-t = box.space._collation:delete{1} >>---- >>-... >>-utf8.cmp('abc', 'def') >>---- >>-- -1 >>-... >>-box.space._collation:replace(t) >>---- >>-- [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>-... >>--- >>--- gh-2839: allow to store custom fields in field definition. >>--- >>-format = {} >>---- >>-... >>-format[1] = {name = 'field1', type = 'unsigned'} >>---- >>-... >>-format[2] = {'field2', 'unsigned'} >>---- >>-... >>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>---- >>-... >>-s = box.schema.create_space('test', {format = format}) >>---- >>-... >>-s:format()[3].custom_field >>---- >>-- custom_value >>-... >>-s:drop() >>---- >>-... >>--- >>--- gh-2937: allow to specify collation in field definition. >>--- >>-format = {} >>---- >>-... >>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>---- >>-... >>-format[2] = {'field2', 'any', collation = 'unicode_ci'} >>---- >>-... >>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>---- >>-... >>-s = box.schema.create_space('test', {format = format}) >>---- >>-... >>-s:format() >>---- >>-- [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >>- 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >>-... >>-s:drop() >>---- >>-... >>--- Check that collation is allowed only for stings, scalar and any types. >>-format = {} >>---- >>-... >>-format[1] = {'field1', 'unsigned', collation = 'unicode'} >>---- >>-... >>-s = box.schema.create_space('test', {format = format}) >>---- >>-- error: 'Failed to create space ''test'': collation is reasonable only for string, >>- scalar and any fields' >>-... >>-format[1] = {'field2', 'array', collation = 'unicode_ci'} >>---- >>-... >>-s = box.schema.create_space('test', {format = format}) >>---- >>-- error: 'Failed to create space ''test'': collation is reasonable only for string, >>- scalar and any fields' >>-... >>--- Check that error is raised when collation doesn't exists. >>-format = {} >>---- >>-... >>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>---- >>-... >>-s = box.schema.create_space('test', {format = format}) >>---- >>-- error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >>-... >>--- Check that error is raised when collation with wrong id is used. >>-_space = box.space[box.schema.SPACE_ID] >>---- >>-... >>-utils = require('utils') >>---- >>-... >>-EMPTY_MAP = utils.setmap({}) >>---- >>-... >>-format = {{name = 'field1', type = 'string', collation = 666}} >>---- >>-... >>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>---- >>-... >>-_space:insert(surrogate_space) >>---- >>-- error: 'Wrong collation options (field 1): collation was not found by ID' >>-... >>--- >>--- gh-2783 >>--- A ddl operation shoud fail before trying to lock a ddl latch >>--- in a multi-statement transaction. >>--- If operation tries to lock already an locked latch then the >>--- current transaction will be silently rolled back under our feet. >>--- This is confusing. So check for multi-statement transaction >>--- before locking the latch. >>--- >>-test_latch = box.schema.space.create('test_latch') >>---- >>-... >>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>---- >>-... >>-fiber = require('fiber') >>---- >>-... >>-c = fiber.channel(1) >>---- >>-... >>-test_run:cmd("setopt delimiter ';'") >>---- >>-- true >>-... >>-_ = fiber.create(function() >>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>- c:put(true) >>-end); >>---- >>-... >>--- Should be Ok for now >>-box.begin() >>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>-box.commit(); >>---- >>-... >>-test_run:cmd("setopt delimiter ''"); >>---- >>-- true >>-... >>--- Explicitly roll back the transaction in multi-statement, >>--- which hasn't finished due to DDL error >>-box.rollback() >>---- >>-... >>-_ = c:get() >>---- >>-... >>-test_latch:drop() -- this is where everything stops >>---- >>-... >>diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua >>deleted file mode 100644 >>index 101bc6f9b..000000000 >>--- a/test/box/ddl.test.lua >>+++ /dev/null >>@@ -1,272 +0,0 @@ >>-env = require('test_run') >>-test_run = env.new() >>- >>-fiber = require'fiber' >>- >>--- simple test for parallel ddl execution >>-_ = box.schema.space.create('test'):create_index('pk') >>- >>-ch = fiber.channel(2) >>- >>-test_run:cmd("setopt delimiter ';'") >>- >>-function f1() >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>- ch:put(true) >>-end; >>- >>-function f2() >>- box.space.test:create_index('third', {parts = {3, 'string'}}) >>- ch:put(true) >>-end; >>- >>-test_run:cmd("setopt delimiter ''"); >>- >>-_ = {fiber.create(f1), fiber.create(f2)} >>- >>-ch:get() >>-ch:get() >>- >>-_ = box.space.test:drop() >>- >>-test_run:cmd('restart server default') >>- >>-env = require('test_run') >>-test_run = env.new() >>-fiber = require'fiber' >>- >>-ch = fiber.channel(2) >>- >>---issue #928 >>-space = box.schema.space.create('test_trunc') >>-_ = space:create_index('pk') >>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>- >>-function test_trunc() space:truncate() ch:put(true) end >>- >>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>-_ = {ch:get(), ch:get()} >>-space:drop() >>- >>--- index should not crash after alter >>-space = box.schema.space.create('test_swap') >>-index = space:create_index('pk') >>-space:replace({1, 2, 3}) >>-index:rename('primary') >>-index2 = space:create_index('sec') >>-space:replace({2, 3, 1}) >>-space:select() >>-space:drop() >>- >>- >>-ch = fiber.channel(3) >>- >>-_ = box.schema.space.create('test'):create_index('pk') >>- >>-test_run:cmd("setopt delimiter ';'") >>-function add_index() >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>- ch:put(true) >>-end; >>- >>-function insert_tuple(tuple) >>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>-end; >>-test_run:cmd("setopt delimiter ''"); >>- >>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>-{ch:get(), ch:get(), ch:get()} >>- >>-box.space.test:select() >>- >>-test_run:cmd('restart server default') >>- >>-box.space.test:select() >>-box.space.test:drop() >>- >>--- gh-2336 crash if format called twice during snapshot >>-fiber = require'fiber' >>- >>-space = box.schema.space.create('test_format') >>-_ = space:create_index('pk', { parts = { 1,'str' }}) >>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>-str = string.rep("t",1024) >>-for i = 1, 10000 do space:insert{tostring(i), str} end >>-ch = fiber.channel(3) >>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>- >>-{ch:get(), ch:get(), ch:get()} >>- >>-space:drop() >>- >>--- collation >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>- >>-box.internal.collation.create('test') >>-box.internal.collation.create('test', 'ICU') >>-box.internal.collation.create(42, 'ICU', 'ru_RU') >>-box.internal.collation.create('test', 42, 'ru_RU') >>-box.internal.collation.create('test', 'ICU', 42) >>-box.internal.collation.create('test', 'nothing', 'ru_RU') >>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>-box.internal.collation.drop('test') >>-box.internal.collation.drop('nothing') -- allowed >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>-box.internal.collation.drop('test') --ok >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>-box.internal.collation.drop('test') --ok >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>-box.internal.collation.drop('test') --ok >>-c = box.space._collation:get{1}:totable() >>-c[2] = 'unicode_test' >>-box.space._collation:replace(c) >>- >>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>- >>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>-box.internal.collation.exists('test') >>- >>-test_run:cmd('restart server default') >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>- >>-box.internal.collation.exists('test') >>-box.internal.collation.drop('test') >>- >>-box.space._collation:auto_increment{'test'} >>-box.space._collation:auto_increment{'test', 0, 'ICU'} >>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>-box.space._collation.index.name:delete{'test'} -- ok >>-box.space._collation.index.name:delete{'nothing'} -- allowed >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>-opts = {normalization_mode='NORMAL'} >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.normalization_mode = 'OFF' >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>-opts.numeric_collation = 'PERL' >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.numeric_collation = 'ON' >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>-opts.alternate_handling1 = 'ON' >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.alternate_handling1 = nil >>-opts.alternate_handling = 'ON' >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.alternate_handling = 'SHIFTED' >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>-opts.case_first = 'ON' >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.case_first = 'OFF' >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>-opts.case_level = 'UPPER' >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>-opts.case_level = 'DEFAULT' >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>-_ = box.space._collation.index.name:delete{'test'} -- ok >>- >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>-box.space._collation:select{} >>-test_run:cmd('restart server default') >>-box.space._collation:select{} >>-box.space._collation.index.name:delete{'test'} >>- >>--- >>--- gh-3290: expose ICU into Lua. It uses built-in collations, that >>--- must work even if a collation is deleted from _collation. >>--- >>-t = box.space._collation:delete{1} >>-utf8.cmp('abc', 'def') >>-box.space._collation:replace(t) >>- >>--- >>--- gh-2839: allow to store custom fields in field definition. >>--- >>-format = {} >>-format[1] = {name = 'field1', type = 'unsigned'} >>-format[2] = {'field2', 'unsigned'} >>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>-s = box.schema.create_space('test', {format = format}) >>-s:format()[3].custom_field >>-s:drop() >>- >>--- >>--- gh-2937: allow to specify collation in field definition. >>--- >>-format = {} >>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>-format[2] = {'field2', 'any', collation = 'unicode_ci'} >>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>-s = box.schema.create_space('test', {format = format}) >>-s:format() >>-s:drop() >>- >>--- Check that collation is allowed only for stings, scalar and any types. >>-format = {} >>-format[1] = {'field1', 'unsigned', collation = 'unicode'} >>-s = box.schema.create_space('test', {format = format}) >>-format[1] = {'field2', 'array', collation = 'unicode_ci'} >>-s = box.schema.create_space('test', {format = format}) >>- >>--- Check that error is raised when collation doesn't exists. >>-format = {} >>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>-s = box.schema.create_space('test', {format = format}) >>- >>--- Check that error is raised when collation with wrong id is used. >>-_space = box.space[box.schema.SPACE_ID] >>-utils = require('utils') >>-EMPTY_MAP = utils.setmap({}) >>-format = {{name = 'field1', type = 'string', collation = 666}} >>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>-_space:insert(surrogate_space) >>- >>--- >>--- gh-2783 >>--- A ddl operation shoud fail before trying to lock a ddl latch >>--- in a multi-statement transaction. >>--- If operation tries to lock already an locked latch then the >>--- current transaction will be silently rolled back under our feet. >>--- This is confusing. So check for multi-statement transaction >>--- before locking the latch. >>--- >>-test_latch = box.schema.space.create('test_latch') >>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>-fiber = require('fiber') >>-c = fiber.channel(1) >>-test_run:cmd("setopt delimiter ';'") >>-_ = fiber.create(function() >>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>- c:put(true) >>-end); >>- >>--- Should be Ok for now >>-box.begin() >>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>-box.commit(); >>-test_run:cmd("setopt delimiter ''"); >>--- Explicitly roll back the transaction in multi-statement, >>--- which hasn't finished due to DDL error >>-box.rollback() >>- >>-_ = c:get() >>-test_latch:drop() -- this is where everything stops >>diff --git a/test/box/ddl_alter.result b/test/box/ddl_alter.result >>new file mode 100644 >>index 000000000..ce4a6ee69 >>--- /dev/null >>+++ b/test/box/ddl_alter.result >>@@ -0,0 +1,30 @@ >>+-- test-run result file version 2 >>+-- index should not crash after alter >>+space = box.schema.space.create('test_swap') >>+ | --- >>+ | ... >>+index = space:create_index('pk') >>+ | --- >>+ | ... >>+space:replace({1, 2, 3}) >>+ | --- >>+ | - [1, 2, 3] >>+ | ... >>+index:rename('primary') >>+ | --- >>+ | ... >>+index2 = space:create_index('sec') >>+ | --- >>+ | ... >>+space:replace({2, 3, 1}) >>+ | --- >>+ | - [2, 3, 1] >>+ | ... >>+space:select() >>+ | --- >>+ | - - [1, 2, 3] >>+ | - [2, 3, 1] >>+ | ... >>+space:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/ddl_alter.test.lua b/test/box/ddl_alter.test.lua >>new file mode 100644 >>index 000000000..ab0263b78 >>--- /dev/null >>+++ b/test/box/ddl_alter.test.lua >>@@ -0,0 +1,9 @@ >>+-- index should not crash after alter >>+space = box.schema.space.create('test_swap') >>+index = space:create_index('pk') >>+space:replace({1, 2, 3}) >>+index:rename('primary') >>+index2 = space:create_index('sec') >>+space:replace({2, 3, 1}) >>+space:select() >>+space:drop() >>diff --git a/test/box/ddl_collation.result b/test/box/ddl_collation.result >>new file mode 100644 >>index 000000000..2571ad072 >>--- /dev/null >>+++ b/test/box/ddl_collation.result >>@@ -0,0 +1,853 @@ >>+-- test-run result file version 2 >>+env = require('test_run') >>+ | --- >>+ | ... >>+test_run = env.new() >>+ | --- >>+ | ... >>+ >>+-- collation >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>+ | --- >>+ | ... >>+ >>+box.internal.collation.create('test') >>+ | --- >>+ | - error: Illegal parameters, type (second arg) must be a string >>+ | ... >>+box.internal.collation.create('test', 'ICU') >>+ | --- >>+ | - error: Illegal parameters, locale (third arg) must be a string >>+ | ... >>+box.internal.collation.create(42, 'ICU', 'ru_RU') >>+ | --- >>+ | - error: Illegal parameters, name (first arg) must be a string >>+ | ... >>+box.internal.collation.create('test', 42, 'ru_RU') >>+ | --- >>+ | - error: Illegal parameters, type (second arg) must be a string >>+ | ... >>+box.internal.collation.create('test', 'ICU', 42) >>+ | --- >>+ | - error: Illegal parameters, locale (third arg) must be a string >>+ | ... >>+box.internal.collation.create('test', 'nothing', 'ru_RU') >>+ | --- >>+ | - error: 'Failed to initialize collation: unknown collation type.' >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>+ | --- >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>+ | --- >>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >>+ | ... >>+box.internal.collation.drop('test') >>+ | --- >>+ | ... >>+box.internal.collation.drop('nothing') -- allowed >>+ | --- >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>+ | --- >>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>+ | --- >>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>+ | --- >>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong french_collation option setting, >>+ | expected ON | OFF.' >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>+ | --- >>+ | ... >>+box.internal.collation.drop('test') --ok >>+ | --- >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong strength option setting, expected >>+ | PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>+ | --- >>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>+ | --- >>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >>+ | ... >>+box.internal.collation.drop('test') --ok >>+ | --- >>+ | ... >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>+ | --- >>+ | ... >>+box.internal.collation.drop('test') --ok >>+ | --- >>+ | ... >>+c = box.space._collation:get{1}:totable() >>+ | --- >>+ | ... >>+c[2] = 'unicode_test' >>+ | --- >>+ | ... >>+box.space._collation:replace(c) >>+ | --- >>+ | - error: collation does not support alter >>+ | ... >>+ >>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>+ | --- >>+ | ... >>+ >>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>+ | --- >>+ | ... >>+box.internal.collation.exists('test') >>+ | --- >>+ | - true >>+ | ... >>+ >>+test_run:cmd('restart server default') >>+ | >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>+ | --- >>+ | ... >>+ >>+box.internal.collation.exists('test') >>+ | --- >>+ | - true >>+ | ... >>+box.internal.collation.drop('test') >>+ | --- >>+ | ... >>+ >>+box.space._collation:auto_increment{'test'} >>+ | --- >>+ | - error: Tuple field 3 required by space format is missing >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU'} >>+ | --- >>+ | - error: Tuple field 5 required by space format is missing >>+ | ... >>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>+ | --- >>+ | - error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >>+ | ... >>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>+ | --- >>+ | - error: 'Tuple field 2 type does not match one required by operation: expected string' >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>+ | --- >>+ | - error: 'Tuple field 4 type does not match one required by operation: expected string' >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>+ | --- >>+ | - error: 'Tuple field 5 type does not match one required by operation: expected string' >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>+ | --- >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>+ | --- >>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >>+ | ... >>+box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>+box.space._collation.index.name:delete{'nothing'} -- allowed >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>+ | --- >>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>+ | --- >>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>+ | --- >>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >>+ | ... >>+opts = {normalization_mode='NORMAL'} >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >>+ | expected ON | OFF.' >>+ | ... >>+opts.normalization_mode = 'OFF' >>+ | --- >>+ | ... >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>+ | --- >>+ | ... >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | ... >>+opts.numeric_collation = 'PERL' >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >>+ | expected ON | OFF.' >>+ | ... >>+opts.numeric_collation = 'ON' >>+ | --- >>+ | ... >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+ | --- >>+ | ... >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | ... >>+opts.alternate_handling1 = 'ON' >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >>+ | ... >>+opts.alternate_handling1 = nil >>+ | --- >>+ | ... >>+opts.alternate_handling = 'ON' >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >>+ | expected NON_IGNORABLE | SHIFTED.' >>+ | ... >>+opts.alternate_handling = 'SHIFTED' >>+ | --- >>+ | ... >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+ | --- >>+ | ... >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | ... >>+opts.case_first = 'ON' >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >>+ | OFF | UPPER_FIRST | LOWER_FIRST.' >>+ | ... >>+opts.case_first = 'OFF' >>+ | --- >>+ | ... >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+ | --- >>+ | ... >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | ... >>+opts.case_level = 'UPPER' >>+ | --- >>+ | ... >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>+ | ON | OFF.' >>+ | ... >>+opts.case_level = 'DEFAULT' >>+ | --- >>+ | ... >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+ | --- >>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>+ | ON | OFF.' >>+ | ... >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ | --- >>+ | ... >>+ >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>+ | --- >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>+box.space._collation:select{} >>+ | --- >>+ | - - [0, 'none', 1, 'BINARY', '', {}] >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>+ | - [3, 'binary', 1, 'BINARY', '', {}] >>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>+test_run:cmd('restart server default') >>+ | >>+box.space._collation:select{} >>+ | --- >>+ | - - [0, 'none', 1, 'BINARY', '', {}] >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>+ | - [3, 'binary', 1, 'BINARY', '', {}] >>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>+box.space._collation.index.name:delete{'test'} >>+ | --- >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>+ | ... >>diff --git a/test/box/ddl_collation.test.lua b/test/box/ddl_collation.test.lua >>new file mode 100644 >>index 000000000..ee26af9c6 >>--- /dev/null >>+++ b/test/box/ddl_collation.test.lua >>@@ -0,0 +1,90 @@ >>+env = require('test_run') >>+test_run = env.new() >>+ >>+-- collation >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>+ >>+box.internal.collation.create('test') >>+box.internal.collation.create('test', 'ICU') >>+box.internal.collation.create(42, 'ICU', 'ru_RU') >>+box.internal.collation.create('test', 42, 'ru_RU') >>+box.internal.collation.create('test', 'ICU', 42) >>+box.internal.collation.create('test', 'nothing', 'ru_RU') >>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>+box.internal.collation.drop('test') >>+box.internal.collation.drop('nothing') -- allowed >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>+box.internal.collation.drop('test') --ok >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>+box.internal.collation.drop('test') --ok >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>+box.internal.collation.drop('test') --ok >>+c = box.space._collation:get{1}:totable() >>+c[2] = 'unicode_test' >>+box.space._collation:replace(c) >>+ >>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>+ >>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>+box.internal.collation.exists('test') >>+ >>+test_run:cmd('restart server default') >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>+ >>+box.internal.collation.exists('test') >>+box.internal.collation.drop('test') >>+ >>+box.space._collation:auto_increment{'test'} >>+box.space._collation:auto_increment{'test', 0, 'ICU'} >>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>+box.space._collation.index.name:delete{'test'} -- ok >>+box.space._collation.index.name:delete{'nothing'} -- allowed >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>+opts = {normalization_mode='NORMAL'} >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.normalization_mode = 'OFF' >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+opts.numeric_collation = 'PERL' >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.numeric_collation = 'ON' >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+opts.alternate_handling1 = 'ON' >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.alternate_handling1 = nil >>+opts.alternate_handling = 'ON' >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.alternate_handling = 'SHIFTED' >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+opts.case_first = 'ON' >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.case_first = 'OFF' >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+opts.case_level = 'UPPER' >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>+opts.case_level = 'DEFAULT' >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>+_ = box.space._collation.index.name:delete{'test'} -- ok >>+ >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>+box.space._collation:select{} >>+test_run:cmd('restart server default') >>+box.space._collation:select{} >>+box.space._collation.index.name:delete{'test'} >>diff --git a/test/box/ddl_collation_types.result b/test/box/ddl_collation_types.result >>new file mode 100644 >>index 000000000..7eaef62c0 >>--- /dev/null >>+++ b/test/box/ddl_collation_types.result >>@@ -0,0 +1,21 @@ >>+-- test-run result file version 2 >>+-- Check that collation is allowed only for strings, scalar and any types. >>+format = {} >>+ | --- >>+ | ... >>+format[1] = {'field1', 'unsigned', collation = 'unicode'} >>+ | --- >>+ | ... >>+s = box.schema.create_space('test', {format = format}) >>+ | --- >>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >>+ | scalar and any fields' >>+ | ... >>+format[1] = {'field2', 'array', collation = 'unicode_ci'} >>+ | --- >>+ | ... >>+s = box.schema.create_space('test', {format = format}) >>+ | --- >>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >>+ | scalar and any fields' >>+ | ... >>diff --git a/test/box/ddl_collation_types.test.lua b/test/box/ddl_collation_types.test.lua >>new file mode 100644 >>index 000000000..5930d54b0 >>--- /dev/null >>+++ b/test/box/ddl_collation_types.test.lua >>@@ -0,0 +1,6 @@ >>+-- Check that collation is allowed only for strings, scalar and any types. >>+format = {} >>+format[1] = {'field1', 'unsigned', collation = 'unicode'} >>+s = box.schema.create_space('test', {format = format}) >>+format[1] = {'field2', 'array', collation = 'unicode_ci'} >>+s = box.schema.create_space('test', {format = format}) >>diff --git a/test/box/ddl_collation_wrong_id.result b/test/box/ddl_collation_wrong_id.result >>new file mode 100644 >>index 000000000..c6cf058b1 >>--- /dev/null >>+++ b/test/box/ddl_collation_wrong_id.result >>@@ -0,0 +1,21 @@ >>+-- test-run result file version 2 >>+-- Check that error is raised when collation with wrong id is used. >>+_space = box.space[box.schema.SPACE_ID] >>+ | --- >>+ | ... >>+utils = require('utils') >>+ | --- >>+ | ... >>+EMPTY_MAP = utils.setmap({}) >>+ | --- >>+ | ... >>+format = {{name = 'field1', type = 'string', collation = 666}} >>+ | --- >>+ | ... >>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>+ | --- >>+ | ... >>+_space:insert(surrogate_space) >>+ | --- >>+ | - error: 'Wrong collation options (field 1): collation was not found by ID' >>+ | ... >>diff --git a/test/box/ddl_collation_wrong_id.test.lua b/test/box/ddl_collation_wrong_id.test.lua >>new file mode 100644 >>index 000000000..8d28d3ee1 >>--- /dev/null >>+++ b/test/box/ddl_collation_wrong_id.test.lua >>@@ -0,0 +1,7 @@ >>+-- Check that error is raised when collation with wrong id is used. >>+_space = box.space[box.schema.SPACE_ID] >>+utils = require('utils') >>+EMPTY_MAP = utils.setmap({}) >>+format = {{name = 'field1', type = 'string', collation = 666}} >>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>+_space:insert(surrogate_space) >>diff --git a/test/box/ddl_no_collation.result b/test/box/ddl_no_collation.result >>new file mode 100644 >>index 000000000..6f4e8fa0b >>--- /dev/null >>+++ b/test/box/ddl_no_collation.result >>@@ -0,0 +1,12 @@ >>+-- test-run result file version 2 >>+-- Check that error is raised when collation doesn't exists. >>+format = {} >>+ | --- >>+ | ... >>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>+ | --- >>+ | ... >>+s = box.schema.create_space('test', {format = format}) >>+ | --- >>+ | - error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >>+ | ... >>diff --git a/test/box/ddl_no_collation.test.lua b/test/box/ddl_no_collation.test.lua >>new file mode 100644 >>index 000000000..3e411373b >>--- /dev/null >>+++ b/test/box/ddl_no_collation.test.lua >>@@ -0,0 +1,4 @@ >>+-- Check that error is raised when collation doesn't exists. >>+format = {} >>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>+s = box.schema.create_space('test', {format = format}) >>diff --git a/test/box/ddl_parallel.result b/test/box/ddl_parallel.result >>new file mode 100644 >>index 000000000..dfa4a1422 >>--- /dev/null >>+++ b/test/box/ddl_parallel.result >>@@ -0,0 +1,61 @@ >>+-- test-run result file version 2 >>+env = require('test_run') >>+ | --- >>+ | ... >>+test_run = env.new() >>+ | --- >>+ | ... >>+ >>+fiber = require'fiber' >>+ | --- >>+ | ... >>+ >>+-- simple test for parallel ddl execution >>+_ = box.schema.space.create('test'):create_index('pk') >>+ | --- >>+ | ... >>+ >>+ch = fiber.channel(2) >>+ | --- >>+ | ... >>+ >>+test_run:cmd("setopt delimiter ';'") >>+ | --- >>+ | - true >>+ | ... >>+ >>+function f1() >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>+ ch:put(true) >>+end; >>+ | --- >>+ | ... >>+ >>+function f2() >>+ box.space.test:create_index('third', {parts = {3, 'string'}}) >>+ ch:put(true) >>+end; >>+ | --- >>+ | ... >>+ >>+test_run:cmd("setopt delimiter ''"); >>+ | --- >>+ | - true >>+ | ... >>+ >>+_ = {fiber.create(f1), fiber.create(f2)} >>+ | --- >>+ | ... >>+ >>+ch:get() >>+ | --- >>+ | - true >>+ | ... >>+ch:get() >>+ | --- >>+ | - true >>+ | ... >>+ >>+_ = box.space.test:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/ddl_parallel.test.lua b/test/box/ddl_parallel.test.lua >>new file mode 100644 >>index 000000000..99c3bfdcc >>--- /dev/null >>+++ b/test/box/ddl_parallel.test.lua >>@@ -0,0 +1,30 @@ >>+env = require('test_run') >>+test_run = env.new() >>+ >>+fiber = require'fiber' >>+ >>+-- simple test for parallel ddl execution >>+_ = box.schema.space.create('test'):create_index('pk') >>+ >>+ch = fiber.channel(2) >>+ >>+test_run:cmd("setopt delimiter ';'") >>+ >>+function f1() >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>+ ch:put(true) >>+end; >>+ >>+function f2() >>+ box.space.test:create_index('third', {parts = {3, 'string'}}) >>+ ch:put(true) >>+end; >>+ >>+test_run:cmd("setopt delimiter ''"); >>+ >>+_ = {fiber.create(f1), fiber.create(f2)} >>+ >>+ch:get() >>+ch:get() >>+ >>+_ = box.space.test:drop() >>diff --git a/test/box/ddl_tuple.result b/test/box/ddl_tuple.result >>new file mode 100644 >>index 000000000..6a024a833 >>--- /dev/null >>+++ b/test/box/ddl_tuple.result >>@@ -0,0 +1,67 @@ >>+-- test-run result file version 2 >>+env = require('test_run') >>+ | --- >>+ | ... >>+test_run = env.new() >>+ | --- >>+ | ... >>+ >>+fiber = require'fiber' >>+ | --- >>+ | ... >>+ch = fiber.channel(3) >>+ | --- >>+ | ... >>+ >>+_ = box.schema.space.create('test'):create_index('pk') >>+ | --- >>+ | ... >>+ >>+test_run:cmd("setopt delimiter ';'") >>+ | --- >>+ | - true >>+ | ... >>+function add_index() >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>+ ch:put(true) >>+end; >>+ | --- >>+ | ... >>+ >>+function insert_tuple(tuple) >>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>+end; >>+ | --- >>+ | ... >>+test_run:cmd("setopt delimiter ''"); >>+ | --- >>+ | - true >>+ | ... >>+ >>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>+ | --- >>+ | ... >>+{ch:get(), ch:get(), ch:get()} >>+ | --- >>+ | - - - false >>+ | - 'Tuple field 2 type does not match one required by operation: expected unsigned' >>+ | - - true >>+ | - [1, 2, 'a'] >>+ | - true >>+ | ... >>+ >>+box.space.test:select() >>+ | --- >>+ | - - [1, 2, 'a'] >>+ | ... >>+ >>+test_run:cmd('restart server default') >>+ | >>+ >>+box.space.test:select() >>+ | --- >>+ | - - [1, 2, 'a'] >>+ | ... >>+box.space.test:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/ddl_tuple.test.lua b/test/box/ddl_tuple.test.lua >>new file mode 100644 >>index 000000000..1c78a00e4 >>--- /dev/null >>+++ b/test/box/ddl_tuple.test.lua >>@@ -0,0 +1,28 @@ >>+env = require('test_run') >>+test_run = env.new() >>+ >>+fiber = require'fiber' >>+ch = fiber.channel(3) >>+ >>+_ = box.schema.space.create('test'):create_index('pk') >>+ >>+test_run:cmd("setopt delimiter ';'") >>+function add_index() >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>+ ch:put(true) >>+end; >>+ >>+function insert_tuple(tuple) >>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>+end; >>+test_run:cmd("setopt delimiter ''"); >>+ >>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>+{ch:get(), ch:get(), ch:get()} >>+ >>+box.space.test:select() >>+ >>+test_run:cmd('restart server default') >>+ >>+box.space.test:select() >>+box.space.test:drop() >>diff --git a/test/box/gh-2336-ddl_call_twice.result b/test/box/gh-2336-ddl_call_twice.result >>new file mode 100644 >>index 000000000..0f55c9c09 >>--- /dev/null >>+++ b/test/box/gh-2336-ddl_call_twice.result >>@@ -0,0 +1,44 @@ >>+-- test-run result file version 2 >>+-- gh-2336 crash if format called twice during snapshot >>+fiber = require'fiber' >>+ | --- >>+ | ... >>+ >>+space = box.schema.space.create('test_format') >>+ | --- >>+ | ... >>+_ = space:create_index('pk', { parts = { 1,'str' }}) >>+ | --- >>+ | ... >>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>+ | --- >>+ | ... >>+str = string.rep("t",1024) >>+ | --- >>+ | ... >>+for i = 1, 10000 do space:insert{tostring(i), str} end >>+ | --- >>+ | ... >>+ch = fiber.channel(3) >>+ | --- >>+ | ... >>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>+ | --- >>+ | ... >>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>+ | --- >>+ | ... >>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>+ | --- >>+ | ... >>+ >>+{ch:get(), ch:get(), ch:get()} >>+ | --- >>+ | - - true >>+ | - true >>+ | - true >>+ | ... >>+ >>+space:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/gh-2336-ddl_call_twice.test.lua b/test/box/gh-2336-ddl_call_twice.test.lua >>new file mode 100644 >>index 000000000..f92afc211 >>--- /dev/null >>+++ b/test/box/gh-2336-ddl_call_twice.test.lua >>@@ -0,0 +1,16 @@ >>+-- gh-2336 crash if format called twice during snapshot >>+fiber = require'fiber' >>+ >>+space = box.schema.space.create('test_format') >>+_ = space:create_index('pk', { parts = { 1,'str' }}) >>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>+str = string.rep("t",1024) >>+for i = 1, 10000 do space:insert{tostring(i), str} end >>+ch = fiber.channel(3) >>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>+ >>+{ch:get(), ch:get(), ch:get()} >>+ >>+space:drop() >>diff --git a/test/box/gh-2783-ddl_lock.result b/test/box/gh-2783-ddl_lock.result >>new file mode 100644 >>index 000000000..7b3ba3444 >>--- /dev/null >>+++ b/test/box/gh-2783-ddl_lock.result >>@@ -0,0 +1,62 @@ >>+-- test-run result file version 2 >>+env = require('test_run') >>+ | --- >>+ | ... >>+test_run = env.new() >>+ | --- >>+ | ... >>+ >>+-- >>+-- gh-2783 >>+-- A ddl operation shoud fail before trying to lock a ddl latch >>+-- in a multi-statement transaction. >>+-- If operation tries to lock already an locked latch then the >>+-- current transaction will be silently rolled back under our feet. >>+-- This is confusing. So check for multi-statement transaction >>+-- before locking the latch. >>+-- >>+test_latch = box.schema.space.create('test_latch') >>+ | --- >>+ | ... >>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>+ | --- >>+ | ... >>+fiber = require('fiber') >>+ | --- >>+ | ... >>+c = fiber.channel(1) >>+ | --- >>+ | ... >>+test_run:cmd("setopt delimiter ';'") >>+ | --- >>+ | - true >>+ | ... >>+_ = fiber.create(function() >>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>+ c:put(true) >>+end); >>+ | --- >>+ | ... >>+ >>+-- Should be Ok for now >>+box.begin() >>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>+box.commit(); >>+ | --- >>+ | ... >>+test_run:cmd("setopt delimiter ''"); >>+ | --- >>+ | - true >>+ | ... >>+-- Explicitly roll back the transaction in multi-statement, >>+-- which hasn't finished due to DDL error >>+box.rollback() >>+ | --- >>+ | ... >>+ >>+_ = c:get() >>+ | --- >>+ | ... >>+test_latch:drop() -- this is where everything stops >>+ | --- >>+ | ... >>diff --git a/test/box/gh-2783-ddl_lock.test.lua b/test/box/gh-2783-ddl_lock.test.lua >>new file mode 100644 >>index 000000000..953e177a7 >>--- /dev/null >>+++ b/test/box/gh-2783-ddl_lock.test.lua >>@@ -0,0 +1,33 @@ >>+env = require('test_run') >>+test_run = env.new() >>+ >>+-- >>+-- gh-2783 >>+-- A ddl operation shoud fail before trying to lock a ddl latch >>+-- in a multi-statement transaction. >>+-- If operation tries to lock already an locked latch then the >>+-- current transaction will be silently rolled back under our feet. >>+-- This is confusing. So check for multi-statement transaction >>+-- before locking the latch. >>+-- >>+test_latch = box.schema.space.create('test_latch') >>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>+fiber = require('fiber') >>+c = fiber.channel(1) >>+test_run:cmd("setopt delimiter ';'") >>+_ = fiber.create(function() >>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>+ c:put(true) >>+end); >>+ >>+-- Should be Ok for now >>+box.begin() >>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>+box.commit(); >>+test_run:cmd("setopt delimiter ''"); >>+-- Explicitly roll back the transaction in multi-statement, >>+-- which hasn't finished due to DDL error >>+box.rollback() >>+ >>+_ = c:get() >>+test_latch:drop() -- this is where everything stops >>diff --git a/test/box/gh-2839-ddl_custom_fields.result b/test/box/gh-2839-ddl_custom_fields.result >>new file mode 100644 >>index 000000000..3846fe08e >>--- /dev/null >>+++ b/test/box/gh-2839-ddl_custom_fields.result >>@@ -0,0 +1,26 @@ >>+-- test-run result file version 2 >>+-- >>+-- gh-2839: allow to store custom fields in field definition. >>+-- >>+format = {} >>+ | --- >>+ | ... >>+format[1] = {name = 'field1', type = 'unsigned'} >>+ | --- >>+ | ... >>+format[2] = {'field2', 'unsigned'} >>+ | --- >>+ | ... >>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>+ | --- >>+ | ... >>+s = box.schema.create_space('test', {format = format}) >>+ | --- >>+ | ... >>+s:format()[3].custom_field >>+ | --- >>+ | - custom_value >>+ | ... >>+s:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/gh-2839-ddl_custom_fields.test.lua b/test/box/gh-2839-ddl_custom_fields.test.lua >>new file mode 100644 >>index 000000000..e1c0e2a0b >>--- /dev/null >>+++ b/test/box/gh-2839-ddl_custom_fields.test.lua >>@@ -0,0 +1,10 @@ >>+-- >>+-- gh-2839: allow to store custom fields in field definition. >>+-- >>+format = {} >>+format[1] = {name = 'field1', type = 'unsigned'} >>+format[2] = {'field2', 'unsigned'} >>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>+s = box.schema.create_space('test', {format = format}) >>+s:format()[3].custom_field >>+s:drop() >>diff --git a/test/box/gh-2937-ddl_collation_field_def.result b/test/box/gh-2937-ddl_collation_field_def.result >>new file mode 100644 >>index 000000000..8b3de607e >>--- /dev/null >>+++ b/test/box/gh-2937-ddl_collation_field_def.result >>@@ -0,0 +1,27 @@ >>+-- test-run result file version 2 >>+-- >>+-- gh-2937: allow to specify collation in field definition. >>+-- >>+format = {} >>+ | --- >>+ | ... >>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>+ | --- >>+ | ... >>+format[2] = {'field2', 'any', collation = 'unicode_ci'} >>+ | --- >>+ | ... >>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>+ | --- >>+ | ... >>+s = box.schema.create_space('test', {format = format}) >>+ | --- >>+ | ... >>+s:format() >>+ | --- >>+ | - [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >>+ | 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >>+ | ... >>+s:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/gh-2937-ddl_collation_field_def.test.lua b/test/box/gh-2937-ddl_collation_field_def.test.lua >>new file mode 100644 >>index 000000000..1ddfa7246 >>--- /dev/null >>+++ b/test/box/gh-2937-ddl_collation_field_def.test.lua >>@@ -0,0 +1,10 @@ >>+-- >>+-- gh-2937: allow to specify collation in field definition. >>+-- >>+format = {} >>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>+format[2] = {'field2', 'any', collation = 'unicode_ci'} >>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>+s = box.schema.create_space('test', {format = format}) >>+s:format() >>+s:drop() >>diff --git a/test/box/gh-3290-ddl_collation_deleted.result b/test/box/gh-3290-ddl_collation_deleted.result >>new file mode 100644 >>index 000000000..eb59b6c1d >>--- /dev/null >>+++ b/test/box/gh-3290-ddl_collation_deleted.result >>@@ -0,0 +1,16 @@ >>+-- test-run result file version 2 >>+-- >>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >>+-- must work even if a collation is deleted from _collation. >>+-- >>+t = box.space._collation:delete{1} >>+ | --- >>+ | ... >>+utf8.cmp('abc', 'def') >>+ | --- >>+ | - -1 >>+ | ... >>+box.space._collation:replace(t) >>+ | --- >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>+ | ... >>diff --git a/test/box/gh-3290-ddl_collation_deleted.test.lua b/test/box/gh-3290-ddl_collation_deleted.test.lua >>new file mode 100644 >>index 000000000..5fd3d7e1a >>--- /dev/null >>+++ b/test/box/gh-3290-ddl_collation_deleted.test.lua >>@@ -0,0 +1,7 @@ >>+-- >>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >>+-- must work even if a collation is deleted from _collation. >>+-- >>+t = box.space._collation:delete{1} >>+utf8.cmp('abc', 'def') >>+box.space._collation:replace(t) >>diff --git a/test/box/gh-928-ddl_truncate.result b/test/box/gh-928-ddl_truncate.result >>new file mode 100644 >>index 000000000..f244e07f1 >>--- /dev/null >>+++ b/test/box/gh-928-ddl_truncate.result >>@@ -0,0 +1,35 @@ >>+-- test-run result file version 2 >>+fiber = require'fiber' >>+ | --- >>+ | ... >>+ch = fiber.channel(2) >>+ | --- >>+ | ... >>+ >>+--issue #928 >>+space = box.schema.space.create('test_trunc') >>+ | --- >>+ | ... >>+_ = space:create_index('pk') >>+ | --- >>+ | ... >>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>+ | --- >>+ | ... >>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>+ | --- >>+ | ... >>+ >>+function test_trunc() space:truncate() ch:put(true) end >>+ | --- >>+ | ... >>+ >>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>+ | --- >>+ | ... >>+_ = {ch:get(), ch:get()} >>+ | --- >>+ | ... >>+space:drop() >>+ | --- >>+ | ... >>diff --git a/test/box/gh-928-ddl_truncate.test.lua b/test/box/gh-928-ddl_truncate.test.lua >>new file mode 100644 >>index 000000000..10be8c361 >>--- /dev/null >>+++ b/test/box/gh-928-ddl_truncate.test.lua >>@@ -0,0 +1,14 @@ >>+fiber = require'fiber' >>+ch = fiber.channel(2) >>+ >>+--issue #928 >>+space = box.schema.space.create('test_trunc') >>+_ = space:create_index('pk') >>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>+ >>+function test_trunc() space:truncate() ch:put(true) end >>+ >>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>+_ = {ch:get(), ch:get()} >>+space:drop() >>-- >>2.17.1 >> > > >-- >Oleg Piskunov > -- Alexander Tikhonov [-- Attachment #2: Type: text/html, Size: 155734 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test 2020-03-19 13:50 ` Alexander Tikhonov @ 2020-03-20 8:40 ` Oleg Piskunov 2020-03-24 8:02 ` Sergey Bronnikov 1 sibling, 0 replies; 6+ messages in thread From: Oleg Piskunov @ 2020-03-20 8:40 UTC (permalink / raw) To: Alexander Tikhonov; +Cc: tarantool-patches [-- Attachment #1: Type: text/plain, Size: 153731 bytes --] LGTM. Was confused that you work with different tests in one branch resulting my review messed up. >Четверг, 19 марта 2020, 16:50 +03:00 от Alexander Tikhonov <avtikhon@tarantool.org>: > > >Hi, Oleg, I’ve rechecked all the tests and didn’t find any used way to cleanup the fibers at the tests finish. I’ll suggest to discuss it in the future changes, but not mess with the current tests splitting. > >>Среда, 18 марта 2020, 15:06 +03:00 от Oleg Piskunov < o.piskunov@tarantool.org >: >> >> >>Hi, >> >>Sasha, need to cleanup fibers in next tests: >> >>test/box/ddl_parallel.test.lua >>test/box/ddl_tuple.test.lua >>test/box/gh-2336-ddl_call_twice.test.lua >>test/box/gh-2783-ddl_lock.test.lua >>test/box/gh-928-ddl_truncate.test.lua >Not needed in the current patch. >> >>Unused fibers in next tests: >> >>test/box/gh-822_net.box.test.lua >> >Was already removed in V2, please check if you mentioned correct test. >> >>>Среда, 18 марта 2020, 13:37 +03:00 от Alexander V. Tikhonov < avtikhon@tarantool.org >: >>> >>>Divided into tests: >>>- box/ddl_alter.test.lua >>>- box/ddl_collation.test.lua >>>- box/ddl_collation_types.test.lua >>>- box/ddl_collation_wrong_id.test.lua >>>- box/ddl_no_collation.test.lua >>>- box/ddl_parallel.test.lua >>>- box/ddl_tuple.test.lua >>>- box/gh-2336-ddl_call_twice.test.lua >>>- box/gh-2783-ddl_lock.test.lua >>>- box/gh-2839-ddl_custom_fields.test.lua >>>- box/gh-2937-ddl_collation_field_def.test.lua >>>- box/gh-3290-ddl_collation_deleted.test.lua >>>- box/gh-928-ddl_truncate.test.lua >>>--- >>> >>>Github: https://github.com/tarantool/tarantool/tree/avtikhon/divide_tests >>> >>> test/box/ddl.result | 1210 ----------------- >>> test/box/ddl.test.lua | 272 ---- >>> test/box/ddl_alter.result | 30 + >>> test/box/ddl_alter.test.lua | 9 + >>> test/box/ddl_collation.result | 853 ++++++++++++ >>> test/box/ddl_collation.test.lua | 90 ++ >>> test/box/ddl_collation_types.result | 21 + >>> test/box/ddl_collation_types.test.lua | 6 + >>> test/box/ddl_collation_wrong_id.result | 21 + >>> test/box/ddl_collation_wrong_id.test.lua | 7 + >>> test/box/ddl_no_collation.result | 12 + >>> test/box/ddl_no_collation.test.lua | 4 + >>> test/box/ddl_parallel.result | 61 + >>> test/box/ddl_parallel.test.lua | 30 + >>> test/box/ddl_tuple.result | 67 + >>> test/box/ddl_tuple.test.lua | 28 + >>> test/box/gh-2336-ddl_call_twice.result | 44 + >>> test/box/gh-2336-ddl_call_twice.test.lua | 16 + >>> test/box/gh-2783-ddl_lock.result | 62 + >>> test/box/gh-2783-ddl_lock.test.lua | 33 + >>> test/box/gh-2839-ddl_custom_fields.result | 26 + >>> test/box/gh-2839-ddl_custom_fields.test.lua | 10 + >>> .../gh-2937-ddl_collation_field_def.result | 27 + >>> .../gh-2937-ddl_collation_field_def.test.lua | 10 + >>> test/box/gh-3290-ddl_collation_deleted.result | 16 + >>> .../gh-3290-ddl_collation_deleted.test.lua | 7 + >>> test/box/gh-928-ddl_truncate.result | 35 + >>> test/box/gh-928-ddl_truncate.test.lua | 14 + >>> 28 files changed, 1539 insertions(+), 1482 deletions(-) >>> delete mode 100644 test/box/ddl.result >>> delete mode 100644 test/box/ddl.test.lua >>> create mode 100644 test/box/ddl_alter.result >>> create mode 100644 test/box/ddl_alter.test.lua >>> create mode 100644 test/box/ddl_collation.result >>> create mode 100644 test/box/ddl_collation.test.lua >>> create mode 100644 test/box/ddl_collation_types.result >>> create mode 100644 test/box/ddl_collation_types.test.lua >>> create mode 100644 test/box/ddl_collation_wrong_id.result >>> create mode 100644 test/box/ddl_collation_wrong_id.test.lua >>> create mode 100644 test/box/ddl_no_collation.result >>> create mode 100644 test/box/ddl_no_collation.test.lua >>> create mode 100644 test/box/ddl_parallel.result >>> create mode 100644 test/box/ddl_parallel.test.lua >>> create mode 100644 test/box/ddl_tuple.result >>> create mode 100644 test/box/ddl_tuple.test.lua >>> create mode 100644 test/box/gh-2336-ddl_call_twice.result >>> create mode 100644 test/box/gh-2336-ddl_call_twice.test.lua >>> create mode 100644 test/box/gh-2783-ddl_lock.result >>> create mode 100644 test/box/gh-2783-ddl_lock.test.lua >>> create mode 100644 test/box/gh-2839-ddl_custom_fields.result >>> create mode 100644 test/box/gh-2839-ddl_custom_fields.test.lua >>> create mode 100644 test/box/gh-2937-ddl_collation_field_def.result >>> create mode 100644 test/box/gh-2937-ddl_collation_field_def.test.lua >>> create mode 100644 test/box/gh-3290-ddl_collation_deleted.result >>> create mode 100644 test/box/gh-3290-ddl_collation_deleted.test.lua >>> create mode 100644 test/box/gh-928-ddl_truncate.result >>> create mode 100644 test/box/gh-928-ddl_truncate.test.lua >>> >>>diff --git a/test/box/ddl.result b/test/box/ddl.result >>>deleted file mode 100644 >>>index b995b1493..000000000 >>>--- a/test/box/ddl.result >>>+++ /dev/null >>>@@ -1,1210 +0,0 @@ >>>-env = require('test_run') >>>---- >>>-... >>>-test_run = env.new() >>>---- >>>-... >>>-fiber = require'fiber' >>>---- >>>-... >>>--- simple test for parallel ddl execution >>>-_ = box.schema.space.create('test'):create_index('pk') >>>---- >>>-... >>>-ch = fiber.channel(2) >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ';'") >>>---- >>>-- true >>>-... >>>-function f1() >>>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>- ch:put(true) >>>-end; >>>---- >>>-... >>>-function f2() >>>- box.space.test:create_index('third', {parts = {3, 'string'}}) >>>- ch:put(true) >>>-end; >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ''"); >>>---- >>>-- true >>>-... >>>-_ = {fiber.create(f1), fiber.create(f2)} >>>---- >>>-... >>>-ch:get() >>>---- >>>-- true >>>-... >>>-ch:get() >>>---- >>>-- true >>>-... >>>-_ = box.space.test:drop() >>>---- >>>-... >>>-test_run:cmd('restart server default') >>>-env = require('test_run') >>>---- >>>-... >>>-test_run = env.new() >>>---- >>>-... >>>-fiber = require'fiber' >>>---- >>>-... >>>-ch = fiber.channel(2) >>>---- >>>-... >>>---issue #928 >>>-space = box.schema.space.create('test_trunc') >>>---- >>>-... >>>-_ = space:create_index('pk') >>>---- >>>-... >>>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>>---- >>>-... >>>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>>---- >>>-... >>>-function test_trunc() space:truncate() ch:put(true) end >>>---- >>>-... >>>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>>---- >>>-... >>>-_ = {ch:get(), ch:get()} >>>---- >>>-... >>>-space:drop() >>>---- >>>-... >>>--- index should not crash after alter >>>-space = box.schema.space.create('test_swap') >>>---- >>>-... >>>-index = space:create_index('pk') >>>---- >>>-... >>>-space:replace({1, 2, 3}) >>>---- >>>-- [1, 2, 3] >>>-... >>>-index:rename('primary') >>>---- >>>-... >>>-index2 = space:create_index('sec') >>>---- >>>-... >>>-space:replace({2, 3, 1}) >>>---- >>>-- [2, 3, 1] >>>-... >>>-space:select() >>>---- >>>-- - [1, 2, 3] >>>- - [2, 3, 1] >>>-... >>>-space:drop() >>>---- >>>-... >>>-ch = fiber.channel(3) >>>---- >>>-... >>>-_ = box.schema.space.create('test'):create_index('pk') >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ';'") >>>---- >>>-- true >>>-... >>>-function add_index() >>>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>- ch:put(true) >>>-end; >>>---- >>>-... >>>-function insert_tuple(tuple) >>>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>>-end; >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ''"); >>>---- >>>-- true >>>-... >>>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>>---- >>>-... >>>-{ch:get(), ch:get(), ch:get()} >>>---- >>>-- - - false >>>- - 'Tuple field 2 type does not match one required by operation: expected unsigned' >>>- - - true >>>- - [1, 2, 'a'] >>>- - true >>>-... >>>-box.space.test:select() >>>---- >>>-- - [1, 2, 'a'] >>>-... >>>-test_run:cmd('restart server default') >>>-box.space.test:select() >>>---- >>>-- - [1, 2, 'a'] >>>-... >>>-box.space.test:drop() >>>---- >>>-... >>>--- gh-2336 crash if format called twice during snapshot >>>-fiber = require'fiber' >>>---- >>>-... >>>-space = box.schema.space.create('test_format') >>>---- >>>-... >>>-_ = space:create_index('pk', { parts = { 1,'str' }}) >>>---- >>>-... >>>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>>---- >>>-... >>>-str = string.rep("t",1024) >>>---- >>>-... >>>-for i = 1, 10000 do space:insert{tostring(i), str} end >>>---- >>>-... >>>-ch = fiber.channel(3) >>>---- >>>-... >>>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>>---- >>>-... >>>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>>---- >>>-... >>>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>>---- >>>-... >>>-{ch:get(), ch:get(), ch:get()} >>>---- >>>-- - true >>>- - true >>>- - true >>>-... >>>-space:drop() >>>---- >>>-... >>>--- collation >>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>---- >>>-... >>>-box.internal.collation.create('test') >>>---- >>>-- error: Illegal parameters, type (second arg) must be a string >>>-... >>>-box.internal.collation.create('test', 'ICU') >>>---- >>>-- error: Illegal parameters, locale (third arg) must be a string >>>-... >>>-box.internal.collation.create(42, 'ICU', 'ru_RU') >>>---- >>>-- error: Illegal parameters, name (first arg) must be a string >>>-... >>>-box.internal.collation.create('test', 42, 'ru_RU') >>>---- >>>-- error: Illegal parameters, type (second arg) must be a string >>>-... >>>-box.internal.collation.create('test', 'ICU', 42) >>>---- >>>-- error: Illegal parameters, locale (third arg) must be a string >>>-... >>>-box.internal.collation.create('test', 'nothing', 'ru_RU') >>>---- >>>-- error: 'Failed to initialize collation: unknown collation type.' >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>>---- >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>>---- >>>-- error: Duplicate key exists in unique index 'name' in space '_collation' >>>-... >>>-box.internal.collation.drop('test') >>>---- >>>-... >>>-box.internal.collation.drop('nothing') -- allowed >>>---- >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>>---- >>>-- error: Illegal parameters, options (fourth arg) must be a table or nil >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>>---- >>>-- error: Illegal parameters, options (fourth arg) must be a table or nil >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>>---- >>>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong french_collation option setting, >>>- expected ON | OFF.' >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>>---- >>>-... >>>-box.internal.collation.drop('test') --ok >>>---- >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong strength option setting, expected >>>- PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>>---- >>>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>>---- >>>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' >>>-... >>>-box.internal.collation.drop('test') --ok >>>---- >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>>---- >>>-... >>>-box.internal.collation.drop('test') --ok >>>---- >>>-... >>>-c = box.space._collation:get{1}:totable() >>>---- >>>-... >>>-c[2] = 'unicode_test' >>>---- >>>-... >>>-box.space._collation:replace(c) >>>---- >>>-- error: collation does not support alter >>>-... >>>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>>---- >>>-... >>>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>>---- >>>-... >>>-box.internal.collation.exists('test') >>>---- >>>-- true >>>-... >>>-test_run:cmd('restart server default') >>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>---- >>>-... >>>-box.internal.collation.exists('test') >>>---- >>>-- true >>>-... >>>-box.internal.collation.drop('test') >>>---- >>>-... >>>-box.space._collation:auto_increment{'test'} >>>---- >>>-- error: Tuple field 3 required by space format is missing >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU'} >>>---- >>>-- error: Tuple field 5 required by space format is missing >>>-... >>>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>>---- >>>-- error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >>>-... >>>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>>---- >>>-- error: 'Tuple field 2 type does not match one required by operation: expected string' >>>-... >>>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>>---- >>>-- error: 'Tuple field 4 type does not match one required by operation: expected string' >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>>---- >>>-- error: 'Tuple field 5 type does not match one required by operation: expected string' >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>>---- >>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>---- >>>-- error: Duplicate key exists in unique index 'name' in space '_collation' >>>-... >>>-box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>-box.space._collation.index.name:delete{'nothing'} -- allowed >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>>---- >>>-- error: 'Tuple field 6 type does not match one required by operation: expected map' >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>>---- >>>-- error: 'Tuple field 6 type does not match one required by operation: expected map' >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>>---- >>>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' >>>-... >>>-opts = {normalization_mode='NORMAL'} >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >>>- expected ON | OFF.' >>>-... >>>-opts.normalization_mode = 'OFF' >>>---- >>>-... >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>>---- >>>-... >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-... >>>-opts.numeric_collation = 'PERL' >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >>>- expected ON | OFF.' >>>-... >>>-opts.numeric_collation = 'ON' >>>---- >>>-... >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>---- >>>-... >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-... >>>-opts.alternate_handling1 = 'ON' >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >>>-... >>>-opts.alternate_handling1 = nil >>>---- >>>-... >>>-opts.alternate_handling = 'ON' >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >>>- expected NON_IGNORABLE | SHIFTED.' >>>-... >>>-opts.alternate_handling = 'SHIFTED' >>>---- >>>-... >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>---- >>>-... >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-... >>>-opts.case_first = 'ON' >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >>>- OFF | UPPER_FIRST | LOWER_FIRST.' >>>-... >>>-opts.case_first = 'OFF' >>>---- >>>-... >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>---- >>>-... >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-... >>>-opts.case_level = 'UPPER' >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>>- ON | OFF.' >>>-... >>>-opts.case_level = 'DEFAULT' >>>---- >>>-... >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>---- >>>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>>- ON | OFF.' >>>-... >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>---- >>>-... >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>---- >>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>-box.space._collation:select{} >>>---- >>>-- - [0, 'none', 1, 'BINARY', '', {}] >>>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>>- - [3, 'binary', 1, 'BINARY', '', {}] >>>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>-test_run:cmd('restart server default') >>>-box.space._collation:select{} >>>---- >>>-- - [0, 'none', 1, 'BINARY', '', {}] >>>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>>- - [3, 'binary', 1, 'BINARY', '', {}] >>>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>-box.space._collation.index.name:delete{'test'} >>>---- >>>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>-... >>>--- >>>--- gh-3290: expose ICU into Lua. It uses built-in collations, that >>>--- must work even if a collation is deleted from _collation. >>>--- >>>-t = box.space._collation:delete{1} >>>---- >>>-... >>>-utf8.cmp('abc', 'def') >>>---- >>>-- -1 >>>-... >>>-box.space._collation:replace(t) >>>---- >>>-- [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>-... >>>--- >>>--- gh-2839: allow to store custom fields in field definition. >>>--- >>>-format = {} >>>---- >>>-... >>>-format[1] = {name = 'field1', type = 'unsigned'} >>>---- >>>-... >>>-format[2] = {'field2', 'unsigned'} >>>---- >>>-... >>>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>>---- >>>-... >>>-s = box.schema.create_space('test', {format = format}) >>>---- >>>-... >>>-s:format()[3].custom_field >>>---- >>>-- custom_value >>>-... >>>-s:drop() >>>---- >>>-... >>>--- >>>--- gh-2937: allow to specify collation in field definition. >>>--- >>>-format = {} >>>---- >>>-... >>>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>>---- >>>-... >>>-format[2] = {'field2', 'any', collation = 'unicode_ci'} >>>---- >>>-... >>>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>>---- >>>-... >>>-s = box.schema.create_space('test', {format = format}) >>>---- >>>-... >>>-s:format() >>>---- >>>-- [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >>>- 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >>>-... >>>-s:drop() >>>---- >>>-... >>>--- Check that collation is allowed only for stings, scalar and any types. >>>-format = {} >>>---- >>>-... >>>-format[1] = {'field1', 'unsigned', collation = 'unicode'} >>>---- >>>-... >>>-s = box.schema.create_space('test', {format = format}) >>>---- >>>-- error: 'Failed to create space ''test'': collation is reasonable only for string, >>>- scalar and any fields' >>>-... >>>-format[1] = {'field2', 'array', collation = 'unicode_ci'} >>>---- >>>-... >>>-s = box.schema.create_space('test', {format = format}) >>>---- >>>-- error: 'Failed to create space ''test'': collation is reasonable only for string, >>>- scalar and any fields' >>>-... >>>--- Check that error is raised when collation doesn't exists. >>>-format = {} >>>---- >>>-... >>>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>>---- >>>-... >>>-s = box.schema.create_space('test', {format = format}) >>>---- >>>-- error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >>>-... >>>--- Check that error is raised when collation with wrong id is used. >>>-_space = box.space[box.schema.SPACE_ID] >>>---- >>>-... >>>-utils = require('utils') >>>---- >>>-... >>>-EMPTY_MAP = utils.setmap({}) >>>---- >>>-... >>>-format = {{name = 'field1', type = 'string', collation = 666}} >>>---- >>>-... >>>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>>---- >>>-... >>>-_space:insert(surrogate_space) >>>---- >>>-- error: 'Wrong collation options (field 1): collation was not found by ID' >>>-... >>>--- >>>--- gh-2783 >>>--- A ddl operation shoud fail before trying to lock a ddl latch >>>--- in a multi-statement transaction. >>>--- If operation tries to lock already an locked latch then the >>>--- current transaction will be silently rolled back under our feet. >>>--- This is confusing. So check for multi-statement transaction >>>--- before locking the latch. >>>--- >>>-test_latch = box.schema.space.create('test_latch') >>>---- >>>-... >>>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>>---- >>>-... >>>-fiber = require('fiber') >>>---- >>>-... >>>-c = fiber.channel(1) >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ';'") >>>---- >>>-- true >>>-... >>>-_ = fiber.create(function() >>>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>>- c:put(true) >>>-end); >>>---- >>>-... >>>--- Should be Ok for now >>>-box.begin() >>>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>>-box.commit(); >>>---- >>>-... >>>-test_run:cmd("setopt delimiter ''"); >>>---- >>>-- true >>>-... >>>--- Explicitly roll back the transaction in multi-statement, >>>--- which hasn't finished due to DDL error >>>-box.rollback() >>>---- >>>-... >>>-_ = c:get() >>>---- >>>-... >>>-test_latch:drop() -- this is where everything stops >>>---- >>>-... >>>diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua >>>deleted file mode 100644 >>>index 101bc6f9b..000000000 >>>--- a/test/box/ddl.test.lua >>>+++ /dev/null >>>@@ -1,272 +0,0 @@ >>>-env = require('test_run') >>>-test_run = env.new() >>>- >>>-fiber = require'fiber' >>>- >>>--- simple test for parallel ddl execution >>>-_ = box.schema.space.create('test'):create_index('pk') >>>- >>>-ch = fiber.channel(2) >>>- >>>-test_run:cmd("setopt delimiter ';'") >>>- >>>-function f1() >>>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>- ch:put(true) >>>-end; >>>- >>>-function f2() >>>- box.space.test:create_index('third', {parts = {3, 'string'}}) >>>- ch:put(true) >>>-end; >>>- >>>-test_run:cmd("setopt delimiter ''"); >>>- >>>-_ = {fiber.create(f1), fiber.create(f2)} >>>- >>>-ch:get() >>>-ch:get() >>>- >>>-_ = box.space.test:drop() >>>- >>>-test_run:cmd('restart server default') >>>- >>>-env = require('test_run') >>>-test_run = env.new() >>>-fiber = require'fiber' >>>- >>>-ch = fiber.channel(2) >>>- >>>---issue #928 >>>-space = box.schema.space.create('test_trunc') >>>-_ = space:create_index('pk') >>>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>>- >>>-function test_trunc() space:truncate() ch:put(true) end >>>- >>>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>>-_ = {ch:get(), ch:get()} >>>-space:drop() >>>- >>>--- index should not crash after alter >>>-space = box.schema.space.create('test_swap') >>>-index = space:create_index('pk') >>>-space:replace({1, 2, 3}) >>>-index:rename('primary') >>>-index2 = space:create_index('sec') >>>-space:replace({2, 3, 1}) >>>-space:select() >>>-space:drop() >>>- >>>- >>>-ch = fiber.channel(3) >>>- >>>-_ = box.schema.space.create('test'):create_index('pk') >>>- >>>-test_run:cmd("setopt delimiter ';'") >>>-function add_index() >>>- box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>- ch:put(true) >>>-end; >>>- >>>-function insert_tuple(tuple) >>>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>>-end; >>>-test_run:cmd("setopt delimiter ''"); >>>- >>>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>>-{ch:get(), ch:get(), ch:get()} >>>- >>>-box.space.test:select() >>>- >>>-test_run:cmd('restart server default') >>>- >>>-box.space.test:select() >>>-box.space.test:drop() >>>- >>>--- gh-2336 crash if format called twice during snapshot >>>-fiber = require'fiber' >>>- >>>-space = box.schema.space.create('test_format') >>>-_ = space:create_index('pk', { parts = { 1,'str' }}) >>>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>>-str = string.rep("t",1024) >>>-for i = 1, 10000 do space:insert{tostring(i), str} end >>>-ch = fiber.channel(3) >>>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>>- >>>-{ch:get(), ch:get(), ch:get()} >>>- >>>-space:drop() >>>- >>>--- collation >>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>- >>>-box.internal.collation.create('test') >>>-box.internal.collation.create('test', 'ICU') >>>-box.internal.collation.create(42, 'ICU', 'ru_RU') >>>-box.internal.collation.create('test', 42, 'ru_RU') >>>-box.internal.collation.create('test', 'ICU', 42) >>>-box.internal.collation.create('test', 'nothing', 'ru_RU') >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>>-box.internal.collation.drop('test') >>>-box.internal.collation.drop('nothing') -- allowed >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>>-box.internal.collation.drop('test') --ok >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>>-box.internal.collation.drop('test') --ok >>>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>>-box.internal.collation.drop('test') --ok >>>-c = box.space._collation:get{1}:totable() >>>-c[2] = 'unicode_test' >>>-box.space._collation:replace(c) >>>- >>>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>>- >>>-box.internal.collation.create('test', 'ICU', 'ru_RU') >>>-box.internal.collation.exists('test') >>>- >>>-test_run:cmd('restart server default') >>>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>- >>>-box.internal.collation.exists('test') >>>-box.internal.collation.drop('test') >>>- >>>-box.space._collation:auto_increment{'test'} >>>-box.space._collation:auto_increment{'test', 0, 'ICU'} >>>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>-box.space._collation.index.name:delete{'test'} -- ok >>>-box.space._collation.index.name:delete{'nothing'} -- allowed >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>>-opts = {normalization_mode='NORMAL'} >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.normalization_mode = 'OFF' >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>-opts.numeric_collation = 'PERL' >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.numeric_collation = 'ON' >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>-opts.alternate_handling1 = 'ON' >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.alternate_handling1 = nil >>>-opts.alternate_handling = 'ON' >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.alternate_handling = 'SHIFTED' >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>-opts.case_first = 'ON' >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.case_first = 'OFF' >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>-opts.case_level = 'UPPER' >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>-opts.case_level = 'DEFAULT' >>>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>-_ = box.space._collation.index.name:delete{'test'} -- ok >>>- >>>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>-box.space._collation:select{} >>>-test_run:cmd('restart server default') >>>-box.space._collation:select{} >>>-box.space._collation.index.name:delete{'test'} >>>- >>>--- >>>--- gh-3290: expose ICU into Lua. It uses built-in collations, that >>>--- must work even if a collation is deleted from _collation. >>>--- >>>-t = box.space._collation:delete{1} >>>-utf8.cmp('abc', 'def') >>>-box.space._collation:replace(t) >>>- >>>--- >>>--- gh-2839: allow to store custom fields in field definition. >>>--- >>>-format = {} >>>-format[1] = {name = 'field1', type = 'unsigned'} >>>-format[2] = {'field2', 'unsigned'} >>>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>>-s = box.schema.create_space('test', {format = format}) >>>-s:format()[3].custom_field >>>-s:drop() >>>- >>>--- >>>--- gh-2937: allow to specify collation in field definition. >>>--- >>>-format = {} >>>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>>-format[2] = {'field2', 'any', collation = 'unicode_ci'} >>>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>>-s = box.schema.create_space('test', {format = format}) >>>-s:format() >>>-s:drop() >>>- >>>--- Check that collation is allowed only for stings, scalar and any types. >>>-format = {} >>>-format[1] = {'field1', 'unsigned', collation = 'unicode'} >>>-s = box.schema.create_space('test', {format = format}) >>>-format[1] = {'field2', 'array', collation = 'unicode_ci'} >>>-s = box.schema.create_space('test', {format = format}) >>>- >>>--- Check that error is raised when collation doesn't exists. >>>-format = {} >>>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>>-s = box.schema.create_space('test', {format = format}) >>>- >>>--- Check that error is raised when collation with wrong id is used. >>>-_space = box.space[box.schema.SPACE_ID] >>>-utils = require('utils') >>>-EMPTY_MAP = utils.setmap({}) >>>-format = {{name = 'field1', type = 'string', collation = 666}} >>>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>>-_space:insert(surrogate_space) >>>- >>>--- >>>--- gh-2783 >>>--- A ddl operation shoud fail before trying to lock a ddl latch >>>--- in a multi-statement transaction. >>>--- If operation tries to lock already an locked latch then the >>>--- current transaction will be silently rolled back under our feet. >>>--- This is confusing. So check for multi-statement transaction >>>--- before locking the latch. >>>--- >>>-test_latch = box.schema.space.create('test_latch') >>>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>>-fiber = require('fiber') >>>-c = fiber.channel(1) >>>-test_run:cmd("setopt delimiter ';'") >>>-_ = fiber.create(function() >>>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>>- c:put(true) >>>-end); >>>- >>>--- Should be Ok for now >>>-box.begin() >>>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>>-box.commit(); >>>-test_run:cmd("setopt delimiter ''"); >>>--- Explicitly roll back the transaction in multi-statement, >>>--- which hasn't finished due to DDL error >>>-box.rollback() >>>- >>>-_ = c:get() >>>-test_latch:drop() -- this is where everything stops >>>diff --git a/test/box/ddl_alter.result b/test/box/ddl_alter.result >>>new file mode 100644 >>>index 000000000..ce4a6ee69 >>>--- /dev/null >>>+++ b/test/box/ddl_alter.result >>>@@ -0,0 +1,30 @@ >>>+-- test-run result file version 2 >>>+-- index should not crash after alter >>>+space = box.schema.space.create('test_swap') >>>+ | --- >>>+ | ... >>>+index = space:create_index('pk') >>>+ | --- >>>+ | ... >>>+space:replace({1, 2, 3}) >>>+ | --- >>>+ | - [1, 2, 3] >>>+ | ... >>>+index:rename('primary') >>>+ | --- >>>+ | ... >>>+index2 = space:create_index('sec') >>>+ | --- >>>+ | ... >>>+space:replace({2, 3, 1}) >>>+ | --- >>>+ | - [2, 3, 1] >>>+ | ... >>>+space:select() >>>+ | --- >>>+ | - - [1, 2, 3] >>>+ | - [2, 3, 1] >>>+ | ... >>>+space:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/ddl_alter.test.lua b/test/box/ddl_alter.test.lua >>>new file mode 100644 >>>index 000000000..ab0263b78 >>>--- /dev/null >>>+++ b/test/box/ddl_alter.test.lua >>>@@ -0,0 +1,9 @@ >>>+-- index should not crash after alter >>>+space = box.schema.space.create('test_swap') >>>+index = space:create_index('pk') >>>+space:replace({1, 2, 3}) >>>+index:rename('primary') >>>+index2 = space:create_index('sec') >>>+space:replace({2, 3, 1}) >>>+space:select() >>>+space:drop() >>>diff --git a/test/box/ddl_collation.result b/test/box/ddl_collation.result >>>new file mode 100644 >>>index 000000000..2571ad072 >>>--- /dev/null >>>+++ b/test/box/ddl_collation.result >>>@@ -0,0 +1,853 @@ >>>+-- test-run result file version 2 >>>+env = require('test_run') >>>+ | --- >>>+ | ... >>>+test_run = env.new() >>>+ | --- >>>+ | ... >>>+ >>>+-- collation >>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>+ | --- >>>+ | ... >>>+ >>>+box.internal.collation.create('test') >>>+ | --- >>>+ | - error: Illegal parameters, type (second arg) must be a string >>>+ | ... >>>+box.internal.collation.create('test', 'ICU') >>>+ | --- >>>+ | - error: Illegal parameters, locale (third arg) must be a string >>>+ | ... >>>+box.internal.collation.create(42, 'ICU', 'ru_RU') >>>+ | --- >>>+ | - error: Illegal parameters, name (first arg) must be a string >>>+ | ... >>>+box.internal.collation.create('test', 42, 'ru_RU') >>>+ | --- >>>+ | - error: Illegal parameters, type (second arg) must be a string >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 42) >>>+ | --- >>>+ | - error: Illegal parameters, locale (third arg) must be a string >>>+ | ... >>>+box.internal.collation.create('test', 'nothing', 'ru_RU') >>>+ | --- >>>+ | - error: 'Failed to initialize collation: unknown collation type.' >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>>+ | --- >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>>+ | --- >>>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >>>+ | ... >>>+box.internal.collation.drop('test') >>>+ | --- >>>+ | ... >>>+box.internal.collation.drop('nothing') -- allowed >>>+ | --- >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>>+ | --- >>>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>>+ | --- >>>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>>+ | --- >>>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong french_collation option setting, >>>+ | expected ON | OFF.' >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>>+ | --- >>>+ | ... >>>+box.internal.collation.drop('test') --ok >>>+ | --- >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong strength option setting, expected >>>+ | PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>>+ | --- >>>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>>+ | --- >>>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' >>>+ | ... >>>+box.internal.collation.drop('test') --ok >>>+ | --- >>>+ | ... >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>>+ | --- >>>+ | ... >>>+box.internal.collation.drop('test') --ok >>>+ | --- >>>+ | ... >>>+c = box.space._collation:get{1}:totable() >>>+ | --- >>>+ | ... >>>+c[2] = 'unicode_test' >>>+ | --- >>>+ | ... >>>+box.space._collation:replace(c) >>>+ | --- >>>+ | - error: collation does not support alter >>>+ | ... >>>+ >>>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>>+ | --- >>>+ | ... >>>+ >>>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>>+ | --- >>>+ | ... >>>+box.internal.collation.exists('test') >>>+ | --- >>>+ | - true >>>+ | ... >>>+ >>>+test_run:cmd('restart server default') >>>+ | >>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>+ | --- >>>+ | ... >>>+ >>>+box.internal.collation.exists('test') >>>+ | --- >>>+ | - true >>>+ | ... >>>+box.internal.collation.drop('test') >>>+ | --- >>>+ | ... >>>+ >>>+box.space._collation:auto_increment{'test'} >>>+ | --- >>>+ | - error: Tuple field 3 required by space format is missing >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU'} >>>+ | --- >>>+ | - error: Tuple field 5 required by space format is missing >>>+ | ... >>>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>>+ | --- >>>+ | - error: 'Tuple field 3 type does not match one required by operation: expected unsigned' >>>+ | ... >>>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>>+ | --- >>>+ | - error: 'Tuple field 2 type does not match one required by operation: expected string' >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>>+ | --- >>>+ | - error: 'Tuple field 4 type does not match one required by operation: expected string' >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>>+ | --- >>>+ | - error: 'Tuple field 5 type does not match one required by operation: expected string' >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>>+ | --- >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>+ | --- >>>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' >>>+ | ... >>>+box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>+box.space._collation.index.name:delete{'nothing'} -- allowed >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>>+ | --- >>>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>>+ | --- >>>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>>+ | --- >>>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' >>>+ | ... >>>+opts = {normalization_mode='NORMAL'} >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, >>>+ | expected ON | OFF.' >>>+ | ... >>>+opts.normalization_mode = 'OFF' >>>+ | --- >>>+ | ... >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>>+ | --- >>>+ | ... >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | ... >>>+opts.numeric_collation = 'PERL' >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, >>>+ | expected ON | OFF.' >>>+ | ... >>>+opts.numeric_collation = 'ON' >>>+ | --- >>>+ | ... >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+ | --- >>>+ | ... >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | ... >>>+opts.alternate_handling1 = 'ON' >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' >>>+ | ... >>>+opts.alternate_handling1 = nil >>>+ | --- >>>+ | ... >>>+opts.alternate_handling = 'ON' >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, >>>+ | expected NON_IGNORABLE | SHIFTED.' >>>+ | ... >>>+opts.alternate_handling = 'SHIFTED' >>>+ | --- >>>+ | ... >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+ | --- >>>+ | ... >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | ... >>>+opts.case_first = 'ON' >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong case_first option setting, expected >>>+ | OFF | UPPER_FIRST | LOWER_FIRST.' >>>+ | ... >>>+opts.case_first = 'OFF' >>>+ | --- >>>+ | ... >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+ | --- >>>+ | ... >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | ... >>>+opts.case_level = 'UPPER' >>>+ | --- >>>+ | ... >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>>+ | ON | OFF.' >>>+ | ... >>>+opts.case_level = 'DEFAULT' >>>+ | --- >>>+ | ... >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+ | --- >>>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected >>>+ | ON | OFF.' >>>+ | ... >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ | --- >>>+ | ... >>>+ >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>+ | --- >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>+box.space._collation:select{} >>>+ | --- >>>+ | - - [0, 'none', 1, 'BINARY', '', {}] >>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>>+ | - [3, 'binary', 1, 'BINARY', '', {}] >>>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>+test_run:cmd('restart server default') >>>+ | >>>+box.space._collation:select{} >>>+ | --- >>>+ | - - [0, 'none', 1, 'BINARY', '', {}] >>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] >>>+ | - [3, 'binary', 1, 'BINARY', '', {}] >>>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] >>>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] >>>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] >>>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] >>>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] >>>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] >>>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] >>>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] >>>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] >>>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] >>>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] >>>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] >>>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] >>>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] >>>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] >>>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] >>>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] >>>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] >>>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] >>>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] >>>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] >>>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] >>>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] >>>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] >>>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] >>>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] >>>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] >>>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] >>>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] >>>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] >>>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] >>>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] >>>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] >>>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] >>>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] >>>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] >>>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] >>>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] >>>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] >>>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] >>>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] >>>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] >>>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] >>>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] >>>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] >>>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] >>>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] >>>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] >>>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] >>>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] >>>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] >>>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] >>>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] >>>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] >>>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] >>>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] >>>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] >>>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] >>>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] >>>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] >>>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] >>>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] >>>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] >>>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] >>>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] >>>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] >>>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] >>>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] >>>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] >>>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] >>>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] >>>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] >>>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] >>>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] >>>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] >>>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] >>>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] >>>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] >>>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] >>>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] >>>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] >>>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] >>>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] >>>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] >>>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] >>>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] >>>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] >>>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] >>>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] >>>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] >>>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] >>>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] >>>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] >>>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] >>>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] >>>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] >>>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] >>>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] >>>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] >>>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] >>>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] >>>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] >>>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] >>>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] >>>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] >>>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] >>>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] >>>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] >>>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] >>>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] >>>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] >>>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] >>>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] >>>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] >>>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] >>>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] >>>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] >>>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] >>>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] >>>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] >>>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] >>>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] >>>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] >>>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] >>>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] >>>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] >>>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] >>>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] >>>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] >>>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] >>>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] >>>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] >>>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] >>>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] >>>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] >>>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] >>>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] >>>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] >>>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] >>>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] >>>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] >>>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] >>>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] >>>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] >>>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] >>>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] >>>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] >>>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] >>>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] >>>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] >>>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] >>>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] >>>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] >>>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] >>>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] >>>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] >>>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] >>>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] >>>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] >>>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] >>>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] >>>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] >>>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] >>>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] >>>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] >>>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] >>>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] >>>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] >>>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] >>>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] >>>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] >>>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] >>>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] >>>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] >>>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] >>>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] >>>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] >>>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] >>>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] >>>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] >>>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] >>>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] >>>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] >>>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] >>>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] >>>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] >>>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] >>>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] >>>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] >>>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] >>>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] >>>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] >>>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] >>>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] >>>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] >>>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] >>>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] >>>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] >>>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] >>>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] >>>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] >>>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] >>>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] >>>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] >>>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] >>>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] >>>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] >>>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] >>>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] >>>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] >>>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] >>>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] >>>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] >>>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] >>>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] >>>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] >>>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] >>>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] >>>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] >>>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] >>>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] >>>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] >>>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] >>>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] >>>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] >>>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] >>>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] >>>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] >>>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] >>>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] >>>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] >>>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] >>>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] >>>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] >>>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] >>>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] >>>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] >>>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] >>>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] >>>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] >>>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] >>>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] >>>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] >>>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] >>>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] >>>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] >>>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] >>>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] >>>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] >>>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] >>>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] >>>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] >>>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] >>>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] >>>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] >>>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] >>>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] >>>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] >>>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] >>>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] >>>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] >>>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] >>>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] >>>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] >>>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] >>>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] >>>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>+box.space._collation.index.name:delete{'test'} >>>+ | --- >>>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] >>>+ | ... >>>diff --git a/test/box/ddl_collation.test.lua b/test/box/ddl_collation.test.lua >>>new file mode 100644 >>>index 000000000..ee26af9c6 >>>--- /dev/null >>>+++ b/test/box/ddl_collation.test.lua >>>@@ -0,0 +1,90 @@ >>>+env = require('test_run') >>>+test_run = env.new() >>>+ >>>+-- collation >>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>+ >>>+box.internal.collation.create('test') >>>+box.internal.collation.create('test', 'ICU') >>>+box.internal.collation.create(42, 'ICU', 'ru_RU') >>>+box.internal.collation.create('test', 42, 'ru_RU') >>>+box.internal.collation.create('test', 'ICU', 42) >>>+box.internal.collation.create('test', 'nothing', 'ru_RU') >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok >>>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>>+box.internal.collation.drop('test') >>>+box.internal.collation.drop('nothing') -- allowed >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok >>>+box.internal.collation.drop('test') --ok >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok >>>+box.internal.collation.drop('test') --ok >>>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok >>>+box.internal.collation.drop('test') --ok >>>+c = box.space._collation:get{1}:totable() >>>+c[2] = 'unicode_test' >>>+box.space._collation:replace(c) >>>+ >>>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() >>>+ >>>+box.internal.collation.create('test', 'ICU', 'ru_RU') >>>+box.internal.collation.exists('test') >>>+ >>>+test_run:cmd('restart server default') >>>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end >>>+ >>>+box.internal.collation.exists('test') >>>+box.internal.collation.drop('test') >>>+ >>>+box.space._collation:auto_increment{'test'} >>>+box.space._collation:auto_increment{'test', 0, 'ICU'} >>>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} >>>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} >>>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>+box.space._collation.index.name:delete{'test'} -- ok >>>+box.space._collation.index.name:delete{'nothing'} -- allowed >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} >>>+opts = {normalization_mode='NORMAL'} >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.normalization_mode = 'OFF' >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+opts.numeric_collation = 'PERL' >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.numeric_collation = 'ON' >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+opts.alternate_handling1 = 'ON' >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.alternate_handling1 = nil >>>+opts.alternate_handling = 'ON' >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.alternate_handling = 'SHIFTED' >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+opts.case_first = 'ON' >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.case_first = 'OFF' >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+opts.case_level = 'UPPER' >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} >>>+opts.case_level = 'DEFAULT' >>>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok >>>+_ = box.space._collation.index.name:delete{'test'} -- ok >>>+ >>>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} >>>+box.space._collation:select{} >>>+test_run:cmd('restart server default') >>>+box.space._collation:select{} >>>+box.space._collation.index.name:delete{'test'} >>>diff --git a/test/box/ddl_collation_types.result b/test/box/ddl_collation_types.result >>>new file mode 100644 >>>index 000000000..7eaef62c0 >>>--- /dev/null >>>+++ b/test/box/ddl_collation_types.result >>>@@ -0,0 +1,21 @@ >>>+-- test-run result file version 2 >>>+-- Check that collation is allowed only for strings, scalar and any types. >>>+format = {} >>>+ | --- >>>+ | ... >>>+format[1] = {'field1', 'unsigned', collation = 'unicode'} >>>+ | --- >>>+ | ... >>>+s = box.schema.create_space('test', {format = format}) >>>+ | --- >>>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >>>+ | scalar and any fields' >>>+ | ... >>>+format[1] = {'field2', 'array', collation = 'unicode_ci'} >>>+ | --- >>>+ | ... >>>+s = box.schema.create_space('test', {format = format}) >>>+ | --- >>>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, >>>+ | scalar and any fields' >>>+ | ... >>>diff --git a/test/box/ddl_collation_types.test.lua b/test/box/ddl_collation_types.test.lua >>>new file mode 100644 >>>index 000000000..5930d54b0 >>>--- /dev/null >>>+++ b/test/box/ddl_collation_types.test.lua >>>@@ -0,0 +1,6 @@ >>>+-- Check that collation is allowed only for strings, scalar and any types. >>>+format = {} >>>+format[1] = {'field1', 'unsigned', collation = 'unicode'} >>>+s = box.schema.create_space('test', {format = format}) >>>+format[1] = {'field2', 'array', collation = 'unicode_ci'} >>>+s = box.schema.create_space('test', {format = format}) >>>diff --git a/test/box/ddl_collation_wrong_id.result b/test/box/ddl_collation_wrong_id.result >>>new file mode 100644 >>>index 000000000..c6cf058b1 >>>--- /dev/null >>>+++ b/test/box/ddl_collation_wrong_id.result >>>@@ -0,0 +1,21 @@ >>>+-- test-run result file version 2 >>>+-- Check that error is raised when collation with wrong id is used. >>>+_space = box.space[box.schema.SPACE_ID] >>>+ | --- >>>+ | ... >>>+utils = require('utils') >>>+ | --- >>>+ | ... >>>+EMPTY_MAP = utils.setmap({}) >>>+ | --- >>>+ | ... >>>+format = {{name = 'field1', type = 'string', collation = 666}} >>>+ | --- >>>+ | ... >>>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>>+ | --- >>>+ | ... >>>+_space:insert(surrogate_space) >>>+ | --- >>>+ | - error: 'Wrong collation options (field 1): collation was not found by ID' >>>+ | ... >>>diff --git a/test/box/ddl_collation_wrong_id.test.lua b/test/box/ddl_collation_wrong_id.test.lua >>>new file mode 100644 >>>index 000000000..8d28d3ee1 >>>--- /dev/null >>>+++ b/test/box/ddl_collation_wrong_id.test.lua >>>@@ -0,0 +1,7 @@ >>>+-- Check that error is raised when collation with wrong id is used. >>>+_space = box.space[box.schema.SPACE_ID] >>>+utils = require('utils') >>>+EMPTY_MAP = utils.setmap({}) >>>+format = {{name = 'field1', type = 'string', collation = 666}} >>>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} >>>+_space:insert(surrogate_space) >>>diff --git a/test/box/ddl_no_collation.result b/test/box/ddl_no_collation.result >>>new file mode 100644 >>>index 000000000..6f4e8fa0b >>>--- /dev/null >>>+++ b/test/box/ddl_no_collation.result >>>@@ -0,0 +1,12 @@ >>>+-- test-run result file version 2 >>>+-- Check that error is raised when collation doesn't exists. >>>+format = {} >>>+ | --- >>>+ | ... >>>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>>+ | --- >>>+ | ... >>>+s = box.schema.create_space('test', {format = format}) >>>+ | --- >>>+ | - error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' >>>+ | ... >>>diff --git a/test/box/ddl_no_collation.test.lua b/test/box/ddl_no_collation.test.lua >>>new file mode 100644 >>>index 000000000..3e411373b >>>--- /dev/null >>>+++ b/test/box/ddl_no_collation.test.lua >>>@@ -0,0 +1,4 @@ >>>+-- Check that error is raised when collation doesn't exists. >>>+format = {} >>>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} >>>+s = box.schema.create_space('test', {format = format}) >>>diff --git a/test/box/ddl_parallel.result b/test/box/ddl_parallel.result >>>new file mode 100644 >>>index 000000000..dfa4a1422 >>>--- /dev/null >>>+++ b/test/box/ddl_parallel.result >>>@@ -0,0 +1,61 @@ >>>+-- test-run result file version 2 >>>+env = require('test_run') >>>+ | --- >>>+ | ... >>>+test_run = env.new() >>>+ | --- >>>+ | ... >>>+ >>>+fiber = require'fiber' >>>+ | --- >>>+ | ... >>>+ >>>+-- simple test for parallel ddl execution >>>+_ = box.schema.space.create('test'):create_index('pk') >>>+ | --- >>>+ | ... >>>+ >>>+ch = fiber.channel(2) >>>+ | --- >>>+ | ... >>>+ >>>+test_run:cmd("setopt delimiter ';'") >>>+ | --- >>>+ | - true >>>+ | ... >>>+ >>>+function f1() >>>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>+ ch:put(true) >>>+end; >>>+ | --- >>>+ | ... >>>+ >>>+function f2() >>>+ box.space.test:create_index('third', {parts = {3, 'string'}}) >>>+ ch:put(true) >>>+end; >>>+ | --- >>>+ | ... >>>+ >>>+test_run:cmd("setopt delimiter ''"); >>>+ | --- >>>+ | - true >>>+ | ... >>>+ >>>+_ = {fiber.create(f1), fiber.create(f2)} >>>+ | --- >>>+ | ... >>>+ >>>+ch:get() >>>+ | --- >>>+ | - true >>>+ | ... >>>+ch:get() >>>+ | --- >>>+ | - true >>>+ | ... >>>+ >>>+_ = box.space.test:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/ddl_parallel.test.lua b/test/box/ddl_parallel.test.lua >>>new file mode 100644 >>>index 000000000..99c3bfdcc >>>--- /dev/null >>>+++ b/test/box/ddl_parallel.test.lua >>>@@ -0,0 +1,30 @@ >>>+env = require('test_run') >>>+test_run = env.new() >>>+ >>>+fiber = require'fiber' >>>+ >>>+-- simple test for parallel ddl execution >>>+_ = box.schema.space.create('test'):create_index('pk') >>>+ >>>+ch = fiber.channel(2) >>>+ >>>+test_run:cmd("setopt delimiter ';'") >>>+ >>>+function f1() >>>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>+ ch:put(true) >>>+end; >>>+ >>>+function f2() >>>+ box.space.test:create_index('third', {parts = {3, 'string'}}) >>>+ ch:put(true) >>>+end; >>>+ >>>+test_run:cmd("setopt delimiter ''"); >>>+ >>>+_ = {fiber.create(f1), fiber.create(f2)} >>>+ >>>+ch:get() >>>+ch:get() >>>+ >>>+_ = box.space.test:drop() >>>diff --git a/test/box/ddl_tuple.result b/test/box/ddl_tuple.result >>>new file mode 100644 >>>index 000000000..6a024a833 >>>--- /dev/null >>>+++ b/test/box/ddl_tuple.result >>>@@ -0,0 +1,67 @@ >>>+-- test-run result file version 2 >>>+env = require('test_run') >>>+ | --- >>>+ | ... >>>+test_run = env.new() >>>+ | --- >>>+ | ... >>>+ >>>+fiber = require'fiber' >>>+ | --- >>>+ | ... >>>+ch = fiber.channel(3) >>>+ | --- >>>+ | ... >>>+ >>>+_ = box.schema.space.create('test'):create_index('pk') >>>+ | --- >>>+ | ... >>>+ >>>+test_run:cmd("setopt delimiter ';'") >>>+ | --- >>>+ | - true >>>+ | ... >>>+function add_index() >>>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>+ ch:put(true) >>>+end; >>>+ | --- >>>+ | ... >>>+ >>>+function insert_tuple(tuple) >>>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>>+end; >>>+ | --- >>>+ | ... >>>+test_run:cmd("setopt delimiter ''"); >>>+ | --- >>>+ | - true >>>+ | ... >>>+ >>>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>>+ | --- >>>+ | ... >>>+{ch:get(), ch:get(), ch:get()} >>>+ | --- >>>+ | - - - false >>>+ | - 'Tuple field 2 type does not match one required by operation: expected unsigned' >>>+ | - - true >>>+ | - [1, 2, 'a'] >>>+ | - true >>>+ | ... >>>+ >>>+box.space.test:select() >>>+ | --- >>>+ | - - [1, 2, 'a'] >>>+ | ... >>>+ >>>+test_run:cmd('restart server default') >>>+ | >>>+ >>>+box.space.test:select() >>>+ | --- >>>+ | - - [1, 2, 'a'] >>>+ | ... >>>+box.space.test:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/ddl_tuple.test.lua b/test/box/ddl_tuple.test.lua >>>new file mode 100644 >>>index 000000000..1c78a00e4 >>>--- /dev/null >>>+++ b/test/box/ddl_tuple.test.lua >>>@@ -0,0 +1,28 @@ >>>+env = require('test_run') >>>+test_run = env.new() >>>+ >>>+fiber = require'fiber' >>>+ch = fiber.channel(3) >>>+ >>>+_ = box.schema.space.create('test'):create_index('pk') >>>+ >>>+test_run:cmd("setopt delimiter ';'") >>>+function add_index() >>>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) >>>+ ch:put(true) >>>+end; >>>+ >>>+function insert_tuple(tuple) >>>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) >>>+end; >>>+test_run:cmd("setopt delimiter ''"); >>>+ >>>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} >>>+{ch:get(), ch:get(), ch:get()} >>>+ >>>+box.space.test:select() >>>+ >>>+test_run:cmd('restart server default') >>>+ >>>+box.space.test:select() >>>+box.space.test:drop() >>>diff --git a/test/box/gh-2336-ddl_call_twice.result b/test/box/gh-2336-ddl_call_twice.result >>>new file mode 100644 >>>index 000000000..0f55c9c09 >>>--- /dev/null >>>+++ b/test/box/gh-2336-ddl_call_twice.result >>>@@ -0,0 +1,44 @@ >>>+-- test-run result file version 2 >>>+-- gh-2336 crash if format called twice during snapshot >>>+fiber = require'fiber' >>>+ | --- >>>+ | ... >>>+ >>>+space = box.schema.space.create('test_format') >>>+ | --- >>>+ | ... >>>+_ = space:create_index('pk', { parts = { 1,'str' }}) >>>+ | --- >>>+ | ... >>>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>>+ | --- >>>+ | ... >>>+str = string.rep("t",1024) >>>+ | --- >>>+ | ... >>>+for i = 1, 10000 do space:insert{tostring(i), str} end >>>+ | --- >>>+ | ... >>>+ch = fiber.channel(3) >>>+ | --- >>>+ | ... >>>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>>+ | --- >>>+ | ... >>>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>>+ | --- >>>+ | ... >>>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>>+ | --- >>>+ | ... >>>+ >>>+{ch:get(), ch:get(), ch:get()} >>>+ | --- >>>+ | - - true >>>+ | - true >>>+ | - true >>>+ | ... >>>+ >>>+space:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/gh-2336-ddl_call_twice.test.lua b/test/box/gh-2336-ddl_call_twice.test.lua >>>new file mode 100644 >>>index 000000000..f92afc211 >>>--- /dev/null >>>+++ b/test/box/gh-2336-ddl_call_twice.test.lua >>>@@ -0,0 +1,16 @@ >>>+-- gh-2336 crash if format called twice during snapshot >>>+fiber = require'fiber' >>>+ >>>+space = box.schema.space.create('test_format') >>>+_ = space:create_index('pk', { parts = { 1,'str' }}) >>>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) >>>+str = string.rep("t",1024) >>>+for i = 1, 10000 do space:insert{tostring(i), str} end >>>+ch = fiber.channel(3) >>>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) >>>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} >>>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end >>>+ >>>+{ch:get(), ch:get(), ch:get()} >>>+ >>>+space:drop() >>>diff --git a/test/box/gh-2783-ddl_lock.result b/test/box/gh-2783-ddl_lock.result >>>new file mode 100644 >>>index 000000000..7b3ba3444 >>>--- /dev/null >>>+++ b/test/box/gh-2783-ddl_lock.result >>>@@ -0,0 +1,62 @@ >>>+-- test-run result file version 2 >>>+env = require('test_run') >>>+ | --- >>>+ | ... >>>+test_run = env.new() >>>+ | --- >>>+ | ... >>>+ >>>+-- >>>+-- gh-2783 >>>+-- A ddl operation shoud fail before trying to lock a ddl latch >>>+-- in a multi-statement transaction. >>>+-- If operation tries to lock already an locked latch then the >>>+-- current transaction will be silently rolled back under our feet. >>>+-- This is confusing. So check for multi-statement transaction >>>+-- before locking the latch. >>>+-- >>>+test_latch = box.schema.space.create('test_latch') >>>+ | --- >>>+ | ... >>>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>>+ | --- >>>+ | ... >>>+fiber = require('fiber') >>>+ | --- >>>+ | ... >>>+c = fiber.channel(1) >>>+ | --- >>>+ | ... >>>+test_run:cmd("setopt delimiter ';'") >>>+ | --- >>>+ | - true >>>+ | ... >>>+_ = fiber.create(function() >>>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>>+ c:put(true) >>>+end); >>>+ | --- >>>+ | ... >>>+ >>>+-- Should be Ok for now >>>+box.begin() >>>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>>+box.commit(); >>>+ | --- >>>+ | ... >>>+test_run:cmd("setopt delimiter ''"); >>>+ | --- >>>+ | - true >>>+ | ... >>>+-- Explicitly roll back the transaction in multi-statement, >>>+-- which hasn't finished due to DDL error >>>+box.rollback() >>>+ | --- >>>+ | ... >>>+ >>>+_ = c:get() >>>+ | --- >>>+ | ... >>>+test_latch:drop() -- this is where everything stops >>>+ | --- >>>+ | ... >>>diff --git a/test/box/gh-2783-ddl_lock.test.lua b/test/box/gh-2783-ddl_lock.test.lua >>>new file mode 100644 >>>index 000000000..953e177a7 >>>--- /dev/null >>>+++ b/test/box/gh-2783-ddl_lock.test.lua >>>@@ -0,0 +1,33 @@ >>>+env = require('test_run') >>>+test_run = env.new() >>>+ >>>+-- >>>+-- gh-2783 >>>+-- A ddl operation shoud fail before trying to lock a ddl latch >>>+-- in a multi-statement transaction. >>>+-- If operation tries to lock already an locked latch then the >>>+-- current transaction will be silently rolled back under our feet. >>>+-- This is confusing. So check for multi-statement transaction >>>+-- before locking the latch. >>>+-- >>>+test_latch = box.schema.space.create('test_latch') >>>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) >>>+fiber = require('fiber') >>>+c = fiber.channel(1) >>>+test_run:cmd("setopt delimiter ';'") >>>+_ = fiber.create(function() >>>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) >>>+ c:put(true) >>>+end); >>>+ >>>+-- Should be Ok for now >>>+box.begin() >>>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) >>>+box.commit(); >>>+test_run:cmd("setopt delimiter ''"); >>>+-- Explicitly roll back the transaction in multi-statement, >>>+-- which hasn't finished due to DDL error >>>+box.rollback() >>>+ >>>+_ = c:get() >>>+test_latch:drop() -- this is where everything stops >>>diff --git a/test/box/gh-2839-ddl_custom_fields.result b/test/box/gh-2839-ddl_custom_fields.result >>>new file mode 100644 >>>index 000000000..3846fe08e >>>--- /dev/null >>>+++ b/test/box/gh-2839-ddl_custom_fields.result >>>@@ -0,0 +1,26 @@ >>>+-- test-run result file version 2 >>>+-- >>>+-- gh-2839: allow to store custom fields in field definition. >>>+-- >>>+format = {} >>>+ | --- >>>+ | ... >>>+format[1] = {name = 'field1', type = 'unsigned'} >>>+ | --- >>>+ | ... >>>+format[2] = {'field2', 'unsigned'} >>>+ | --- >>>+ | ... >>>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>>+ | --- >>>+ | ... >>>+s = box.schema.create_space('test', {format = format}) >>>+ | --- >>>+ | ... >>>+s:format()[3].custom_field >>>+ | --- >>>+ | - custom_value >>>+ | ... >>>+s:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/gh-2839-ddl_custom_fields.test.lua b/test/box/gh-2839-ddl_custom_fields.test.lua >>>new file mode 100644 >>>index 000000000..e1c0e2a0b >>>--- /dev/null >>>+++ b/test/box/gh-2839-ddl_custom_fields.test.lua >>>@@ -0,0 +1,10 @@ >>>+-- >>>+-- gh-2839: allow to store custom fields in field definition. >>>+-- >>>+format = {} >>>+format[1] = {name = 'field1', type = 'unsigned'} >>>+format[2] = {'field2', 'unsigned'} >>>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} >>>+s = box.schema.create_space('test', {format = format}) >>>+s:format()[3].custom_field >>>+s:drop() >>>diff --git a/test/box/gh-2937-ddl_collation_field_def.result b/test/box/gh-2937-ddl_collation_field_def.result >>>new file mode 100644 >>>index 000000000..8b3de607e >>>--- /dev/null >>>+++ b/test/box/gh-2937-ddl_collation_field_def.result >>>@@ -0,0 +1,27 @@ >>>+-- test-run result file version 2 >>>+-- >>>+-- gh-2937: allow to specify collation in field definition. >>>+-- >>>+format = {} >>>+ | --- >>>+ | ... >>>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>>+ | --- >>>+ | ... >>>+format[2] = {'field2', 'any', collation = 'unicode_ci'} >>>+ | --- >>>+ | ... >>>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>>+ | --- >>>+ | ... >>>+s = box.schema.create_space('test', {format = format}) >>>+ | --- >>>+ | ... >>>+s:format() >>>+ | --- >>>+ | - [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', >>>+ | 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] >>>+ | ... >>>+s:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/gh-2937-ddl_collation_field_def.test.lua b/test/box/gh-2937-ddl_collation_field_def.test.lua >>>new file mode 100644 >>>index 000000000..1ddfa7246 >>>--- /dev/null >>>+++ b/test/box/gh-2937-ddl_collation_field_def.test.lua >>>@@ -0,0 +1,10 @@ >>>+-- >>>+-- gh-2937: allow to specify collation in field definition. >>>+-- >>>+format = {} >>>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} >>>+format[2] = {'field2', 'any', collation = 'unicode_ci'} >>>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} >>>+s = box.schema.create_space('test', {format = format}) >>>+s:format() >>>+s:drop() >>>diff --git a/test/box/gh-3290-ddl_collation_deleted.result b/test/box/gh-3290-ddl_collation_deleted.result >>>new file mode 100644 >>>index 000000000..eb59b6c1d >>>--- /dev/null >>>+++ b/test/box/gh-3290-ddl_collation_deleted.result >>>@@ -0,0 +1,16 @@ >>>+-- test-run result file version 2 >>>+-- >>>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >>>+-- must work even if a collation is deleted from _collation. >>>+-- >>>+t = box.space._collation:delete{1} >>>+ | --- >>>+ | ... >>>+utf8.cmp('abc', 'def') >>>+ | --- >>>+ | - -1 >>>+ | ... >>>+box.space._collation:replace(t) >>>+ | --- >>>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] >>>+ | ... >>>diff --git a/test/box/gh-3290-ddl_collation_deleted.test.lua b/test/box/gh-3290-ddl_collation_deleted.test.lua >>>new file mode 100644 >>>index 000000000..5fd3d7e1a >>>--- /dev/null >>>+++ b/test/box/gh-3290-ddl_collation_deleted.test.lua >>>@@ -0,0 +1,7 @@ >>>+-- >>>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that >>>+-- must work even if a collation is deleted from _collation. >>>+-- >>>+t = box.space._collation:delete{1} >>>+utf8.cmp('abc', 'def') >>>+box.space._collation:replace(t) >>>diff --git a/test/box/gh-928-ddl_truncate.result b/test/box/gh-928-ddl_truncate.result >>>new file mode 100644 >>>index 000000000..f244e07f1 >>>--- /dev/null >>>+++ b/test/box/gh-928-ddl_truncate.result >>>@@ -0,0 +1,35 @@ >>>+-- test-run result file version 2 >>>+fiber = require'fiber' >>>+ | --- >>>+ | ... >>>+ch = fiber.channel(2) >>>+ | --- >>>+ | ... >>>+ >>>+--issue #928 >>>+space = box.schema.space.create('test_trunc') >>>+ | --- >>>+ | ... >>>+_ = space:create_index('pk') >>>+ | --- >>>+ | ... >>>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>>+ | --- >>>+ | ... >>>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>>+ | --- >>>+ | ... >>>+ >>>+function test_trunc() space:truncate() ch:put(true) end >>>+ | --- >>>+ | ... >>>+ >>>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>>+ | --- >>>+ | ... >>>+_ = {ch:get(), ch:get()} >>>+ | --- >>>+ | ... >>>+space:drop() >>>+ | --- >>>+ | ... >>>diff --git a/test/box/gh-928-ddl_truncate.test.lua b/test/box/gh-928-ddl_truncate.test.lua >>>new file mode 100644 >>>index 000000000..10be8c361 >>>--- /dev/null >>>+++ b/test/box/gh-928-ddl_truncate.test.lua >>>@@ -0,0 +1,14 @@ >>>+fiber = require'fiber' >>>+ch = fiber.channel(2) >>>+ >>>+--issue #928 >>>+space = box.schema.space.create('test_trunc') >>>+_ = space:create_index('pk') >>>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) >>>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) >>>+ >>>+function test_trunc() space:truncate() ch:put(true) end >>>+ >>>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} >>>+_ = {ch:get(), ch:get()} >>>+space:drop() >>>-- >>>2.17.1 >>> >> >> >>-- >>Oleg Piskunov >> > > >-- >Alexander Tikhonov > -- Oleg Piskunov [-- Attachment #2: Type: text/html, Size: 156646 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test 2020-03-19 13:50 ` Alexander Tikhonov 2020-03-20 8:40 ` Oleg Piskunov @ 2020-03-24 8:02 ` Sergey Bronnikov 1 sibling, 0 replies; 6+ messages in thread From: Sergey Bronnikov @ 2020-03-24 8:02 UTC (permalink / raw) To: Alexander Tikhonov; +Cc: Oleg Piskunov, tarantool-patches LGTM. On 16:50 Thu 19 Mar , Alexander Tikhonov wrote: > > > Hi, Oleg, I’ve rechecked all the tests and didn’t find any used way to > cleanup the fibers at the tests finish. I’ll suggest to discuss it in > the future changes, but not mess with the current tests splitting. > > >Среда, 18 марта 2020, 15:06 +03:00 от Oleg Piskunov <o.piskunov@tarantool.org>: > > > > > >Hi, > > > >Sasha, need to cleanup fibers in next tests: > > > >test/box/ddl_parallel.test.lua > >test/box/ddl_tuple.test.lua > >test/box/gh-2336-ddl_call_twice.test.lua > >test/box/gh-2783-ddl_lock.test.lua > >test/box/gh-928-ddl_truncate.test.lua > Not needed in the current patch. > > > >Unused fibers in next tests: > > > >test/box/gh-822_net.box.test.lua > > > Was already removed in V2, please check if you mentioned correct test. > > > >>Среда, 18 марта 2020, 13:37 +03:00 от Alexander V. Tikhonov < avtikhon@tarantool.org >: > >> > >>Divided into tests: > >>- box/ddl_alter.test.lua > >>- box/ddl_collation.test.lua > >>- box/ddl_collation_types.test.lua > >>- box/ddl_collation_wrong_id.test.lua > >>- box/ddl_no_collation.test.lua > >>- box/ddl_parallel.test.lua > >>- box/ddl_tuple.test.lua > >>- box/gh-2336-ddl_call_twice.test.lua > >>- box/gh-2783-ddl_lock.test.lua > >>- box/gh-2839-ddl_custom_fields.test.lua > >>- box/gh-2937-ddl_collation_field_def.test.lua > >>- box/gh-3290-ddl_collation_deleted.test.lua > >>- box/gh-928-ddl_truncate.test.lua > >>--- > >> > >>Github: https://github.com/tarantool/tarantool/tree/avtikhon/divide_tests > >> > >> test/box/ddl.result | 1210 ----------------- > >> test/box/ddl.test.lua | 272 ---- > >> test/box/ddl_alter.result | 30 + > >> test/box/ddl_alter.test.lua | 9 + > >> test/box/ddl_collation.result | 853 ++++++++++++ > >> test/box/ddl_collation.test.lua | 90 ++ > >> test/box/ddl_collation_types.result | 21 + > >> test/box/ddl_collation_types.test.lua | 6 + > >> test/box/ddl_collation_wrong_id.result | 21 + > >> test/box/ddl_collation_wrong_id.test.lua | 7 + > >> test/box/ddl_no_collation.result | 12 + > >> test/box/ddl_no_collation.test.lua | 4 + > >> test/box/ddl_parallel.result | 61 + > >> test/box/ddl_parallel.test.lua | 30 + > >> test/box/ddl_tuple.result | 67 + > >> test/box/ddl_tuple.test.lua | 28 + > >> test/box/gh-2336-ddl_call_twice.result | 44 + > >> test/box/gh-2336-ddl_call_twice.test.lua | 16 + > >> test/box/gh-2783-ddl_lock.result | 62 + > >> test/box/gh-2783-ddl_lock.test.lua | 33 + > >> test/box/gh-2839-ddl_custom_fields.result | 26 + > >> test/box/gh-2839-ddl_custom_fields.test.lua | 10 + > >> .../gh-2937-ddl_collation_field_def.result | 27 + > >> .../gh-2937-ddl_collation_field_def.test.lua | 10 + > >> test/box/gh-3290-ddl_collation_deleted.result | 16 + > >> .../gh-3290-ddl_collation_deleted.test.lua | 7 + > >> test/box/gh-928-ddl_truncate.result | 35 + > >> test/box/gh-928-ddl_truncate.test.lua | 14 + > >> 28 files changed, 1539 insertions(+), 1482 deletions(-) > >> delete mode 100644 test/box/ddl.result > >> delete mode 100644 test/box/ddl.test.lua > >> create mode 100644 test/box/ddl_alter.result > >> create mode 100644 test/box/ddl_alter.test.lua > >> create mode 100644 test/box/ddl_collation.result > >> create mode 100644 test/box/ddl_collation.test.lua > >> create mode 100644 test/box/ddl_collation_types.result > >> create mode 100644 test/box/ddl_collation_types.test.lua > >> create mode 100644 test/box/ddl_collation_wrong_id.result > >> create mode 100644 test/box/ddl_collation_wrong_id.test.lua > >> create mode 100644 test/box/ddl_no_collation.result > >> create mode 100644 test/box/ddl_no_collation.test.lua > >> create mode 100644 test/box/ddl_parallel.result > >> create mode 100644 test/box/ddl_parallel.test.lua > >> create mode 100644 test/box/ddl_tuple.result > >> create mode 100644 test/box/ddl_tuple.test.lua > >> create mode 100644 test/box/gh-2336-ddl_call_twice.result > >> create mode 100644 test/box/gh-2336-ddl_call_twice.test.lua > >> create mode 100644 test/box/gh-2783-ddl_lock.result > >> create mode 100644 test/box/gh-2783-ddl_lock.test.lua > >> create mode 100644 test/box/gh-2839-ddl_custom_fields.result > >> create mode 100644 test/box/gh-2839-ddl_custom_fields.test.lua > >> create mode 100644 test/box/gh-2937-ddl_collation_field_def.result > >> create mode 100644 test/box/gh-2937-ddl_collation_field_def.test.lua > >> create mode 100644 test/box/gh-3290-ddl_collation_deleted.result > >> create mode 100644 test/box/gh-3290-ddl_collation_deleted.test.lua > >> create mode 100644 test/box/gh-928-ddl_truncate.result > >> create mode 100644 test/box/gh-928-ddl_truncate.test.lua > >> > >>diff --git a/test/box/ddl.result b/test/box/ddl.result > >>deleted file mode 100644 > >>index b995b1493..000000000 > >>--- a/test/box/ddl.result > >>+++ /dev/null > >>@@ -1,1210 +0,0 @@ > >>-env = require('test_run') > >>---- > >>-... > >>-test_run = env.new() > >>---- > >>-... > >>-fiber = require'fiber' > >>---- > >>-... > >>--- simple test for parallel ddl execution > >>-_ = box.schema.space.create('test'):create_index('pk') > >>---- > >>-... > >>-ch = fiber.channel(2) > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ';'") > >>---- > >>-- true > >>-... > >>-function f1() > >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>- ch:put(true) > >>-end; > >>---- > >>-... > >>-function f2() > >>- box.space.test:create_index('third', {parts = {3, 'string'}}) > >>- ch:put(true) > >>-end; > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ''"); > >>---- > >>-- true > >>-... > >>-_ = {fiber.create(f1), fiber.create(f2)} > >>---- > >>-... > >>-ch:get() > >>---- > >>-- true > >>-... > >>-ch:get() > >>---- > >>-- true > >>-... > >>-_ = box.space.test:drop() > >>---- > >>-... > >>-test_run:cmd('restart server default') > >>-env = require('test_run') > >>---- > >>-... > >>-test_run = env.new() > >>---- > >>-... > >>-fiber = require'fiber' > >>---- > >>-... > >>-ch = fiber.channel(2) > >>---- > >>-... > >>---issue #928 > >>-space = box.schema.space.create('test_trunc') > >>---- > >>-... > >>-_ = space:create_index('pk') > >>---- > >>-... > >>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) > >>---- > >>-... > >>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) > >>---- > >>-... > >>-function test_trunc() space:truncate() ch:put(true) end > >>---- > >>-... > >>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} > >>---- > >>-... > >>-_ = {ch:get(), ch:get()} > >>---- > >>-... > >>-space:drop() > >>---- > >>-... > >>--- index should not crash after alter > >>-space = box.schema.space.create('test_swap') > >>---- > >>-... > >>-index = space:create_index('pk') > >>---- > >>-... > >>-space:replace({1, 2, 3}) > >>---- > >>-- [1, 2, 3] > >>-... > >>-index:rename('primary') > >>---- > >>-... > >>-index2 = space:create_index('sec') > >>---- > >>-... > >>-space:replace({2, 3, 1}) > >>---- > >>-- [2, 3, 1] > >>-... > >>-space:select() > >>---- > >>-- - [1, 2, 3] > >>- - [2, 3, 1] > >>-... > >>-space:drop() > >>---- > >>-... > >>-ch = fiber.channel(3) > >>---- > >>-... > >>-_ = box.schema.space.create('test'):create_index('pk') > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ';'") > >>---- > >>-- true > >>-... > >>-function add_index() > >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>- ch:put(true) > >>-end; > >>---- > >>-... > >>-function insert_tuple(tuple) > >>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) > >>-end; > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ''"); > >>---- > >>-- true > >>-... > >>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} > >>---- > >>-... > >>-{ch:get(), ch:get(), ch:get()} > >>---- > >>-- - - false > >>- - 'Tuple field 2 type does not match one required by operation: expected unsigned' > >>- - - true > >>- - [1, 2, 'a'] > >>- - true > >>-... > >>-box.space.test:select() > >>---- > >>-- - [1, 2, 'a'] > >>-... > >>-test_run:cmd('restart server default') > >>-box.space.test:select() > >>---- > >>-- - [1, 2, 'a'] > >>-... > >>-box.space.test:drop() > >>---- > >>-... > >>--- gh-2336 crash if format called twice during snapshot > >>-fiber = require'fiber' > >>---- > >>-... > >>-space = box.schema.space.create('test_format') > >>---- > >>-... > >>-_ = space:create_index('pk', { parts = { 1,'str' }}) > >>---- > >>-... > >>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) > >>---- > >>-... > >>-str = string.rep("t",1024) > >>---- > >>-... > >>-for i = 1, 10000 do space:insert{tostring(i), str} end > >>---- > >>-... > >>-ch = fiber.channel(3) > >>---- > >>-... > >>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) > >>---- > >>-... > >>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} > >>---- > >>-... > >>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end > >>---- > >>-... > >>-{ch:get(), ch:get(), ch:get()} > >>---- > >>-- - true > >>- - true > >>- - true > >>-... > >>-space:drop() > >>---- > >>-... > >>--- collation > >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>---- > >>-... > >>-box.internal.collation.create('test') > >>---- > >>-- error: Illegal parameters, type (second arg) must be a string > >>-... > >>-box.internal.collation.create('test', 'ICU') > >>---- > >>-- error: Illegal parameters, locale (third arg) must be a string > >>-... > >>-box.internal.collation.create(42, 'ICU', 'ru_RU') > >>---- > >>-- error: Illegal parameters, name (first arg) must be a string > >>-... > >>-box.internal.collation.create('test', 42, 'ru_RU') > >>---- > >>-- error: Illegal parameters, type (second arg) must be a string > >>-... > >>-box.internal.collation.create('test', 'ICU', 42) > >>---- > >>-- error: Illegal parameters, locale (third arg) must be a string > >>-... > >>-box.internal.collation.create('test', 'nothing', 'ru_RU') > >>---- > >>-- error: 'Failed to initialize collation: unknown collation type.' > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok > >>---- > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU') > >>---- > >>-- error: Duplicate key exists in unique index 'name' in space '_collation' > >>-... > >>-box.internal.collation.drop('test') > >>---- > >>-... > >>-box.internal.collation.drop('nothing') -- allowed > >>---- > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) > >>---- > >>-- error: Illegal parameters, options (fourth arg) must be a table or nil > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') > >>---- > >>-- error: Illegal parameters, options (fourth arg) must be a table or nil > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) > >>---- > >>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong french_collation option setting, > >>- expected ON | OFF.' > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok > >>---- > >>-... > >>-box.internal.collation.drop('test') --ok > >>---- > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong strength option setting, expected > >>- PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) > >>---- > >>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok > >>---- > >>-- error: 'Wrong collation options (field 5): ''strength'' must be enum' > >>-... > >>-box.internal.collation.drop('test') --ok > >>---- > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok > >>---- > >>-... > >>-box.internal.collation.drop('test') --ok > >>---- > >>-... > >>-c = box.space._collation:get{1}:totable() > >>---- > >>-... > >>-c[2] = 'unicode_test' > >>---- > >>-... > >>-box.space._collation:replace(c) > >>---- > >>-- error: collation does not support alter > >>-... > >>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() > >>---- > >>-... > >>-box.internal.collation.create('test', 'ICU', 'ru_RU') > >>---- > >>-... > >>-box.internal.collation.exists('test') > >>---- > >>-- true > >>-... > >>-test_run:cmd('restart server default') > >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>---- > >>-... > >>-box.internal.collation.exists('test') > >>---- > >>-- true > >>-... > >>-box.internal.collation.drop('test') > >>---- > >>-... > >>-box.space._collation:auto_increment{'test'} > >>---- > >>-- error: Tuple field 3 required by space format is missing > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU'} > >>---- > >>-- error: Tuple field 5 required by space format is missing > >>-... > >>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} > >>---- > >>-- error: 'Tuple field 3 type does not match one required by operation: expected unsigned' > >>-... > >>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} > >>---- > >>-- error: 'Tuple field 2 type does not match one required by operation: expected string' > >>-... > >>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} > >>---- > >>-- error: 'Tuple field 4 type does not match one required by operation: expected string' > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} > >>---- > >>-- error: 'Tuple field 5 type does not match one required by operation: expected string' > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok > >>---- > >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>---- > >>-- error: Duplicate key exists in unique index 'name' in space '_collation' > >>-... > >>-box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>-box.space._collation.index.name:delete{'nothing'} -- allowed > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} > >>---- > >>-- error: 'Tuple field 6 type does not match one required by operation: expected map' > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} > >>---- > >>-- error: 'Tuple field 6 type does not match one required by operation: expected map' > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} > >>---- > >>-- error: 'Wrong collation options (field 5): unexpected option ''ping''' > >>-... > >>-opts = {normalization_mode='NORMAL'} > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, > >>- expected ON | OFF.' > >>-... > >>-opts.normalization_mode = 'OFF' > >>---- > >>-... > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok > >>---- > >>-... > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-... > >>-opts.numeric_collation = 'PERL' > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, > >>- expected ON | OFF.' > >>-... > >>-opts.numeric_collation = 'ON' > >>---- > >>-... > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>---- > >>-... > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-... > >>-opts.alternate_handling1 = 'ON' > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' > >>-... > >>-opts.alternate_handling1 = nil > >>---- > >>-... > >>-opts.alternate_handling = 'ON' > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, > >>- expected NON_IGNORABLE | SHIFTED.' > >>-... > >>-opts.alternate_handling = 'SHIFTED' > >>---- > >>-... > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>---- > >>-... > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-... > >>-opts.case_first = 'ON' > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong case_first option setting, expected > >>- OFF | UPPER_FIRST | LOWER_FIRST.' > >>-... > >>-opts.case_first = 'OFF' > >>---- > >>-... > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>---- > >>-... > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-... > >>-opts.case_level = 'UPPER' > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected > >>- ON | OFF.' > >>-... > >>-opts.case_level = 'DEFAULT' > >>---- > >>-... > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>---- > >>-- error: 'Failed to initialize collation: ICU wrong case_level option setting, expected > >>- ON | OFF.' > >>-... > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>---- > >>-... > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>---- > >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>-box.space._collation:select{} > >>---- > >>-- - [0, 'none', 1, 'BINARY', '', {}] > >>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] > >>- - [3, 'binary', 1, 'BINARY', '', {}] > >>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] > >>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] > >>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] > >>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] > >>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] > >>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] > >>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] > >>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] > >>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] > >>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] > >>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] > >>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] > >>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] > >>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] > >>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] > >>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] > >>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] > >>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] > >>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] > >>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] > >>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] > >>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] > >>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] > >>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] > >>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] > >>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] > >>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] > >>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] > >>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] > >>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] > >>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] > >>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] > >>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] > >>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] > >>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] > >>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] > >>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] > >>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] > >>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] > >>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] > >>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] > >>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] > >>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] > >>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] > >>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] > >>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] > >>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] > >>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] > >>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] > >>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] > >>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] > >>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] > >>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] > >>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] > >>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] > >>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] > >>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] > >>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] > >>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] > >>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] > >>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] > >>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] > >>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] > >>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] > >>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] > >>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] > >>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] > >>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] > >>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] > >>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] > >>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] > >>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] > >>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] > >>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] > >>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] > >>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] > >>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] > >>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] > >>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] > >>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] > >>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] > >>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] > >>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] > >>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] > >>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] > >>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] > >>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] > >>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] > >>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] > >>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] > >>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] > >>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] > >>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] > >>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] > >>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] > >>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] > >>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] > >>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] > >>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] > >>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] > >>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] > >>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] > >>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] > >>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] > >>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] > >>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] > >>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] > >>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] > >>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] > >>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] > >>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] > >>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] > >>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] > >>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] > >>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] > >>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] > >>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] > >>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] > >>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] > >>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] > >>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] > >>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] > >>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] > >>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] > >>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] > >>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] > >>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] > >>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] > >>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] > >>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] > >>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] > >>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] > >>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] > >>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] > >>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] > >>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] > >>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] > >>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] > >>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] > >>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] > >>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] > >>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] > >>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] > >>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] > >>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] > >>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] > >>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] > >>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] > >>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] > >>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] > >>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] > >>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] > >>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] > >>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] > >>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] > >>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] > >>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] > >>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] > >>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] > >>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] > >>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] > >>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] > >>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] > >>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] > >>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] > >>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] > >>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] > >>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] > >>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] > >>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] > >>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] > >>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] > >>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] > >>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] > >>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] > >>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] > >>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] > >>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] > >>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] > >>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] > >>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] > >>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] > >>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] > >>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] > >>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] > >>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] > >>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] > >>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] > >>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] > >>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] > >>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] > >>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] > >>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] > >>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] > >>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] > >>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] > >>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] > >>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] > >>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] > >>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] > >>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] > >>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] > >>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] > >>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] > >>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] > >>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] > >>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] > >>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] > >>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] > >>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] > >>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] > >>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] > >>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] > >>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] > >>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] > >>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] > >>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] > >>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] > >>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] > >>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] > >>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] > >>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] > >>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] > >>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] > >>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] > >>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] > >>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] > >>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] > >>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] > >>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] > >>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] > >>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] > >>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] > >>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] > >>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] > >>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] > >>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] > >>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] > >>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] > >>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] > >>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] > >>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] > >>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] > >>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] > >>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] > >>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] > >>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] > >>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] > >>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] > >>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] > >>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] > >>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] > >>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] > >>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] > >>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] > >>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] > >>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] > >>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] > >>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] > >>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] > >>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] > >>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] > >>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] > >>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] > >>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] > >>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] > >>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] > >>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] > >>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] > >>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] > >>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>-test_run:cmd('restart server default') > >>-box.space._collation:select{} > >>---- > >>-- - [0, 'none', 1, 'BINARY', '', {}] > >>- - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>- - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] > >>- - [3, 'binary', 1, 'BINARY', '', {}] > >>- - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] > >>- - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] > >>- - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] > >>- - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] > >>- - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] > >>- - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] > >>- - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] > >>- - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] > >>- - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] > >>- - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] > >>- - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] > >>- - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] > >>- - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] > >>- - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] > >>- - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] > >>- - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] > >>- - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] > >>- - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] > >>- - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] > >>- - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] > >>- - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] > >>- - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] > >>- - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] > >>- - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] > >>- - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] > >>- - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] > >>- - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] > >>- - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] > >>- - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] > >>- - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] > >>- - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] > >>- - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] > >>- - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] > >>- - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] > >>- - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] > >>- - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] > >>- - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] > >>- - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] > >>- - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] > >>- - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] > >>- - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] > >>- - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] > >>- - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] > >>- - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] > >>- - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] > >>- - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] > >>- - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] > >>- - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] > >>- - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] > >>- - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] > >>- - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] > >>- - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] > >>- - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] > >>- - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] > >>- - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] > >>- - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] > >>- - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] > >>- - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] > >>- - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] > >>- - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] > >>- - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] > >>- - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] > >>- - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] > >>- - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] > >>- - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] > >>- - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] > >>- - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] > >>- - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] > >>- - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] > >>- - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] > >>- - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] > >>- - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] > >>- - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] > >>- - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] > >>- - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] > >>- - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] > >>- - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] > >>- - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] > >>- - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] > >>- - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] > >>- - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] > >>- - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] > >>- - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] > >>- - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] > >>- - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] > >>- - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] > >>- - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] > >>- - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] > >>- - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] > >>- - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] > >>- - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] > >>- - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] > >>- - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] > >>- - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] > >>- - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] > >>- - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] > >>- - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] > >>- - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] > >>- - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] > >>- - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] > >>- - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] > >>- - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] > >>- - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] > >>- - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] > >>- - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] > >>- - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] > >>- - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] > >>- - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] > >>- - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] > >>- - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] > >>- - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] > >>- - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] > >>- - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] > >>- - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] > >>- - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] > >>- - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] > >>- - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] > >>- - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] > >>- - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] > >>- - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] > >>- - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] > >>- - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] > >>- - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] > >>- - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] > >>- - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] > >>- - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] > >>- - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] > >>- - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] > >>- - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] > >>- - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] > >>- - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] > >>- - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] > >>- - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] > >>- - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] > >>- - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] > >>- - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] > >>- - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] > >>- - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] > >>- - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] > >>- - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] > >>- - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] > >>- - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] > >>- - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] > >>- - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] > >>- - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] > >>- - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] > >>- - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] > >>- - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] > >>- - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] > >>- - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] > >>- - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] > >>- - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] > >>- - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] > >>- - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] > >>- - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] > >>- - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] > >>- - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] > >>- - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] > >>- - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] > >>- - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] > >>- - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] > >>- - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] > >>- - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] > >>- - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] > >>- - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] > >>- - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] > >>- - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] > >>- - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] > >>- - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] > >>- - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] > >>- - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] > >>- - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] > >>- - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] > >>- - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] > >>- - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] > >>- - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] > >>- - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] > >>- - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] > >>- - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] > >>- - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] > >>- - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] > >>- - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] > >>- - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] > >>- - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] > >>- - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] > >>- - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] > >>- - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] > >>- - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] > >>- - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] > >>- - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] > >>- - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] > >>- - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] > >>- - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] > >>- - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] > >>- - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] > >>- - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] > >>- - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] > >>- - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] > >>- - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] > >>- - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] > >>- - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] > >>- - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] > >>- - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] > >>- - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] > >>- - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] > >>- - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] > >>- - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] > >>- - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] > >>- - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] > >>- - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] > >>- - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] > >>- - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] > >>- - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] > >>- - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] > >>- - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] > >>- - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] > >>- - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] > >>- - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] > >>- - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] > >>- - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] > >>- - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] > >>- - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] > >>- - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] > >>- - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] > >>- - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] > >>- - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] > >>- - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] > >>- - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] > >>- - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] > >>- - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] > >>- - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] > >>- - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] > >>- - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] > >>- - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] > >>- - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] > >>- - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] > >>- - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] > >>- - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] > >>- - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] > >>- - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] > >>- - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] > >>- - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] > >>- - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] > >>- - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] > >>- - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] > >>- - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] > >>- - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] > >>- - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] > >>- - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] > >>- - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] > >>- - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] > >>- - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] > >>- - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] > >>- - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] > >>- - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] > >>- - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] > >>- - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] > >>- - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] > >>- - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] > >>- - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] > >>- - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] > >>- - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] > >>- - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] > >>- - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] > >>- - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] > >>- - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] > >>- - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] > >>- - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] > >>- - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] > >>- - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] > >>- - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] > >>- - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>-box.space._collation.index.name:delete{'test'} > >>---- > >>-- [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>-... > >>--- > >>--- gh-3290: expose ICU into Lua. It uses built-in collations, that > >>--- must work even if a collation is deleted from _collation. > >>--- > >>-t = box.space._collation:delete{1} > >>---- > >>-... > >>-utf8.cmp('abc', 'def') > >>---- > >>-- -1 > >>-... > >>-box.space._collation:replace(t) > >>---- > >>-- [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>-... > >>--- > >>--- gh-2839: allow to store custom fields in field definition. > >>--- > >>-format = {} > >>---- > >>-... > >>-format[1] = {name = 'field1', type = 'unsigned'} > >>---- > >>-... > >>-format[2] = {'field2', 'unsigned'} > >>---- > >>-... > >>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} > >>---- > >>-... > >>-s = box.schema.create_space('test', {format = format}) > >>---- > >>-... > >>-s:format()[3].custom_field > >>---- > >>-- custom_value > >>-... > >>-s:drop() > >>---- > >>-... > >>--- > >>--- gh-2937: allow to specify collation in field definition. > >>--- > >>-format = {} > >>---- > >>-... > >>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} > >>---- > >>-... > >>-format[2] = {'field2', 'any', collation = 'unicode_ci'} > >>---- > >>-... > >>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} > >>---- > >>-... > >>-s = box.schema.create_space('test', {format = format}) > >>---- > >>-... > >>-s:format() > >>---- > >>-- [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', > >>- 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] > >>-... > >>-s:drop() > >>---- > >>-... > >>--- Check that collation is allowed only for stings, scalar and any types. > >>-format = {} > >>---- > >>-... > >>-format[1] = {'field1', 'unsigned', collation = 'unicode'} > >>---- > >>-... > >>-s = box.schema.create_space('test', {format = format}) > >>---- > >>-- error: 'Failed to create space ''test'': collation is reasonable only for string, > >>- scalar and any fields' > >>-... > >>-format[1] = {'field2', 'array', collation = 'unicode_ci'} > >>---- > >>-... > >>-s = box.schema.create_space('test', {format = format}) > >>---- > >>-- error: 'Failed to create space ''test'': collation is reasonable only for string, > >>- scalar and any fields' > >>-... > >>--- Check that error is raised when collation doesn't exists. > >>-format = {} > >>---- > >>-... > >>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} > >>---- > >>-... > >>-s = box.schema.create_space('test', {format = format}) > >>---- > >>-- error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' > >>-... > >>--- Check that error is raised when collation with wrong id is used. > >>-_space = box.space[box.schema.SPACE_ID] > >>---- > >>-... > >>-utils = require('utils') > >>---- > >>-... > >>-EMPTY_MAP = utils.setmap({}) > >>---- > >>-... > >>-format = {{name = 'field1', type = 'string', collation = 666}} > >>---- > >>-... > >>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} > >>---- > >>-... > >>-_space:insert(surrogate_space) > >>---- > >>-- error: 'Wrong collation options (field 1): collation was not found by ID' > >>-... > >>--- > >>--- gh-2783 > >>--- A ddl operation shoud fail before trying to lock a ddl latch > >>--- in a multi-statement transaction. > >>--- If operation tries to lock already an locked latch then the > >>--- current transaction will be silently rolled back under our feet. > >>--- This is confusing. So check for multi-statement transaction > >>--- before locking the latch. > >>--- > >>-test_latch = box.schema.space.create('test_latch') > >>---- > >>-... > >>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) > >>---- > >>-... > >>-fiber = require('fiber') > >>---- > >>-... > >>-c = fiber.channel(1) > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ';'") > >>---- > >>-- true > >>-... > >>-_ = fiber.create(function() > >>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) > >>- c:put(true) > >>-end); > >>---- > >>-... > >>--- Should be Ok for now > >>-box.begin() > >>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) > >>-box.commit(); > >>---- > >>-... > >>-test_run:cmd("setopt delimiter ''"); > >>---- > >>-- true > >>-... > >>--- Explicitly roll back the transaction in multi-statement, > >>--- which hasn't finished due to DDL error > >>-box.rollback() > >>---- > >>-... > >>-_ = c:get() > >>---- > >>-... > >>-test_latch:drop() -- this is where everything stops > >>---- > >>-... > >>diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua > >>deleted file mode 100644 > >>index 101bc6f9b..000000000 > >>--- a/test/box/ddl.test.lua > >>+++ /dev/null > >>@@ -1,272 +0,0 @@ > >>-env = require('test_run') > >>-test_run = env.new() > >>- > >>-fiber = require'fiber' > >>- > >>--- simple test for parallel ddl execution > >>-_ = box.schema.space.create('test'):create_index('pk') > >>- > >>-ch = fiber.channel(2) > >>- > >>-test_run:cmd("setopt delimiter ';'") > >>- > >>-function f1() > >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>- ch:put(true) > >>-end; > >>- > >>-function f2() > >>- box.space.test:create_index('third', {parts = {3, 'string'}}) > >>- ch:put(true) > >>-end; > >>- > >>-test_run:cmd("setopt delimiter ''"); > >>- > >>-_ = {fiber.create(f1), fiber.create(f2)} > >>- > >>-ch:get() > >>-ch:get() > >>- > >>-_ = box.space.test:drop() > >>- > >>-test_run:cmd('restart server default') > >>- > >>-env = require('test_run') > >>-test_run = env.new() > >>-fiber = require'fiber' > >>- > >>-ch = fiber.channel(2) > >>- > >>---issue #928 > >>-space = box.schema.space.create('test_trunc') > >>-_ = space:create_index('pk') > >>-_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) > >>-_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) > >>- > >>-function test_trunc() space:truncate() ch:put(true) end > >>- > >>-_ = {fiber.create(test_trunc), fiber.create(test_trunc)} > >>-_ = {ch:get(), ch:get()} > >>-space:drop() > >>- > >>--- index should not crash after alter > >>-space = box.schema.space.create('test_swap') > >>-index = space:create_index('pk') > >>-space:replace({1, 2, 3}) > >>-index:rename('primary') > >>-index2 = space:create_index('sec') > >>-space:replace({2, 3, 1}) > >>-space:select() > >>-space:drop() > >>- > >>- > >>-ch = fiber.channel(3) > >>- > >>-_ = box.schema.space.create('test'):create_index('pk') > >>- > >>-test_run:cmd("setopt delimiter ';'") > >>-function add_index() > >>- box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>- ch:put(true) > >>-end; > >>- > >>-function insert_tuple(tuple) > >>- ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) > >>-end; > >>-test_run:cmd("setopt delimiter ''"); > >>- > >>-_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} > >>-{ch:get(), ch:get(), ch:get()} > >>- > >>-box.space.test:select() > >>- > >>-test_run:cmd('restart server default') > >>- > >>-box.space.test:select() > >>-box.space.test:drop() > >>- > >>--- gh-2336 crash if format called twice during snapshot > >>-fiber = require'fiber' > >>- > >>-space = box.schema.space.create('test_format') > >>-_ = space:create_index('pk', { parts = { 1,'str' }}) > >>-space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) > >>-str = string.rep("t",1024) > >>-for i = 1, 10000 do space:insert{tostring(i), str} end > >>-ch = fiber.channel(3) > >>-_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) > >>-format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} > >>-for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end > >>- > >>-{ch:get(), ch:get(), ch:get()} > >>- > >>-space:drop() > >>- > >>--- collation > >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>- > >>-box.internal.collation.create('test') > >>-box.internal.collation.create('test', 'ICU') > >>-box.internal.collation.create(42, 'ICU', 'ru_RU') > >>-box.internal.collation.create('test', 42, 'ru_RU') > >>-box.internal.collation.create('test', 'ICU', 42) > >>-box.internal.collation.create('test', 'nothing', 'ru_RU') > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok > >>-box.internal.collation.create('test', 'ICU', 'ru_RU') > >>-box.internal.collation.drop('test') > >>-box.internal.collation.drop('nothing') -- allowed > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 42) > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok > >>-box.internal.collation.drop('test') --ok > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok > >>-box.internal.collation.drop('test') --ok > >>-box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok > >>-box.internal.collation.drop('test') --ok > >>-c = box.space._collation:get{1}:totable() > >>-c[2] = 'unicode_test' > >>-box.space._collation:replace(c) > >>- > >>-box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() > >>- > >>-box.internal.collation.create('test', 'ICU', 'ru_RU') > >>-box.internal.collation.exists('test') > >>- > >>-test_run:cmd('restart server default') > >>-function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>- > >>-box.internal.collation.exists('test') > >>-box.internal.collation.drop('test') > >>- > >>-box.space._collation:auto_increment{'test'} > >>-box.space._collation:auto_increment{'test', 0, 'ICU'} > >>-box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} > >>-box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} > >>-box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 42} > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>-box.space._collation.index.name:delete{'test'} -- ok > >>-box.space._collation.index.name:delete{'nothing'} -- allowed > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} > >>-opts = {normalization_mode='NORMAL'} > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.normalization_mode = 'OFF' > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>-opts.numeric_collation = 'PERL' > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.numeric_collation = 'ON' > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>-opts.alternate_handling1 = 'ON' > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.alternate_handling1 = nil > >>-opts.alternate_handling = 'ON' > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.alternate_handling = 'SHIFTED' > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>-opts.case_first = 'ON' > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.case_first = 'OFF' > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>-opts.case_level = 'UPPER' > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>-opts.case_level = 'DEFAULT' > >>-_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>-_ = box.space._collation.index.name:delete{'test'} -- ok > >>- > >>-box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>-box.space._collation:select{} > >>-test_run:cmd('restart server default') > >>-box.space._collation:select{} > >>-box.space._collation.index.name:delete{'test'} > >>- > >>--- > >>--- gh-3290: expose ICU into Lua. It uses built-in collations, that > >>--- must work even if a collation is deleted from _collation. > >>--- > >>-t = box.space._collation:delete{1} > >>-utf8.cmp('abc', 'def') > >>-box.space._collation:replace(t) > >>- > >>--- > >>--- gh-2839: allow to store custom fields in field definition. > >>--- > >>-format = {} > >>-format[1] = {name = 'field1', type = 'unsigned'} > >>-format[2] = {'field2', 'unsigned'} > >>-format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} > >>-s = box.schema.create_space('test', {format = format}) > >>-s:format()[3].custom_field > >>-s:drop() > >>- > >>--- > >>--- gh-2937: allow to specify collation in field definition. > >>--- > >>-format = {} > >>-format[1] = {name = 'field1', type = 'string', collation = 'unicode'} > >>-format[2] = {'field2', 'any', collation = 'unicode_ci'} > >>-format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} > >>-s = box.schema.create_space('test', {format = format}) > >>-s:format() > >>-s:drop() > >>- > >>--- Check that collation is allowed only for stings, scalar and any types. > >>-format = {} > >>-format[1] = {'field1', 'unsigned', collation = 'unicode'} > >>-s = box.schema.create_space('test', {format = format}) > >>-format[1] = {'field2', 'array', collation = 'unicode_ci'} > >>-s = box.schema.create_space('test', {format = format}) > >>- > >>--- Check that error is raised when collation doesn't exists. > >>-format = {} > >>-format[1] = {'field1', 'unsigend', collation = 'test_coll'} > >>-s = box.schema.create_space('test', {format = format}) > >>- > >>--- Check that error is raised when collation with wrong id is used. > >>-_space = box.space[box.schema.SPACE_ID] > >>-utils = require('utils') > >>-EMPTY_MAP = utils.setmap({}) > >>-format = {{name = 'field1', type = 'string', collation = 666}} > >>-surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} > >>-_space:insert(surrogate_space) > >>- > >>--- > >>--- gh-2783 > >>--- A ddl operation shoud fail before trying to lock a ddl latch > >>--- in a multi-statement transaction. > >>--- If operation tries to lock already an locked latch then the > >>--- current transaction will be silently rolled back under our feet. > >>--- This is confusing. So check for multi-statement transaction > >>--- before locking the latch. > >>--- > >>-test_latch = box.schema.space.create('test_latch') > >>-_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) > >>-fiber = require('fiber') > >>-c = fiber.channel(1) > >>-test_run:cmd("setopt delimiter ';'") > >>-_ = fiber.create(function() > >>- test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) > >>- c:put(true) > >>-end); > >>- > >>--- Should be Ok for now > >>-box.begin() > >>- test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) > >>-box.commit(); > >>-test_run:cmd("setopt delimiter ''"); > >>--- Explicitly roll back the transaction in multi-statement, > >>--- which hasn't finished due to DDL error > >>-box.rollback() > >>- > >>-_ = c:get() > >>-test_latch:drop() -- this is where everything stops > >>diff --git a/test/box/ddl_alter.result b/test/box/ddl_alter.result > >>new file mode 100644 > >>index 000000000..ce4a6ee69 > >>--- /dev/null > >>+++ b/test/box/ddl_alter.result > >>@@ -0,0 +1,30 @@ > >>+-- test-run result file version 2 > >>+-- index should not crash after alter > >>+space = box.schema.space.create('test_swap') > >>+ | --- > >>+ | ... > >>+index = space:create_index('pk') > >>+ | --- > >>+ | ... > >>+space:replace({1, 2, 3}) > >>+ | --- > >>+ | - [1, 2, 3] > >>+ | ... > >>+index:rename('primary') > >>+ | --- > >>+ | ... > >>+index2 = space:create_index('sec') > >>+ | --- > >>+ | ... > >>+space:replace({2, 3, 1}) > >>+ | --- > >>+ | - [2, 3, 1] > >>+ | ... > >>+space:select() > >>+ | --- > >>+ | - - [1, 2, 3] > >>+ | - [2, 3, 1] > >>+ | ... > >>+space:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/ddl_alter.test.lua b/test/box/ddl_alter.test.lua > >>new file mode 100644 > >>index 000000000..ab0263b78 > >>--- /dev/null > >>+++ b/test/box/ddl_alter.test.lua > >>@@ -0,0 +1,9 @@ > >>+-- index should not crash after alter > >>+space = box.schema.space.create('test_swap') > >>+index = space:create_index('pk') > >>+space:replace({1, 2, 3}) > >>+index:rename('primary') > >>+index2 = space:create_index('sec') > >>+space:replace({2, 3, 1}) > >>+space:select() > >>+space:drop() > >>diff --git a/test/box/ddl_collation.result b/test/box/ddl_collation.result > >>new file mode 100644 > >>index 000000000..2571ad072 > >>--- /dev/null > >>+++ b/test/box/ddl_collation.result > >>@@ -0,0 +1,853 @@ > >>+-- test-run result file version 2 > >>+env = require('test_run') > >>+ | --- > >>+ | ... > >>+test_run = env.new() > >>+ | --- > >>+ | ... > >>+ > >>+-- collation > >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>+ | --- > >>+ | ... > >>+ > >>+box.internal.collation.create('test') > >>+ | --- > >>+ | - error: Illegal parameters, type (second arg) must be a string > >>+ | ... > >>+box.internal.collation.create('test', 'ICU') > >>+ | --- > >>+ | - error: Illegal parameters, locale (third arg) must be a string > >>+ | ... > >>+box.internal.collation.create(42, 'ICU', 'ru_RU') > >>+ | --- > >>+ | - error: Illegal parameters, name (first arg) must be a string > >>+ | ... > >>+box.internal.collation.create('test', 42, 'ru_RU') > >>+ | --- > >>+ | - error: Illegal parameters, type (second arg) must be a string > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 42) > >>+ | --- > >>+ | - error: Illegal parameters, locale (third arg) must be a string > >>+ | ... > >>+box.internal.collation.create('test', 'nothing', 'ru_RU') > >>+ | --- > >>+ | - error: 'Failed to initialize collation: unknown collation type.' > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok > >>+ | --- > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU') > >>+ | --- > >>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' > >>+ | ... > >>+box.internal.collation.drop('test') > >>+ | --- > >>+ | ... > >>+box.internal.collation.drop('nothing') -- allowed > >>+ | --- > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) > >>+ | --- > >>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') > >>+ | --- > >>+ | - error: Illegal parameters, options (fourth arg) must be a table or nil > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) > >>+ | --- > >>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong french_collation option setting, > >>+ | expected ON | OFF.' > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok > >>+ | --- > >>+ | ... > >>+box.internal.collation.drop('test') --ok > >>+ | --- > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong strength option setting, expected > >>+ | PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL.' > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) > >>+ | --- > >>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok > >>+ | --- > >>+ | - error: 'Wrong collation options (field 5): ''strength'' must be enum' > >>+ | ... > >>+box.internal.collation.drop('test') --ok > >>+ | --- > >>+ | ... > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok > >>+ | --- > >>+ | ... > >>+box.internal.collation.drop('test') --ok > >>+ | --- > >>+ | ... > >>+c = box.space._collation:get{1}:totable() > >>+ | --- > >>+ | ... > >>+c[2] = 'unicode_test' > >>+ | --- > >>+ | ... > >>+box.space._collation:replace(c) > >>+ | --- > >>+ | - error: collation does not support alter > >>+ | ... > >>+ > >>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() > >>+ | --- > >>+ | ... > >>+ > >>+box.internal.collation.create('test', 'ICU', 'ru_RU') > >>+ | --- > >>+ | ... > >>+box.internal.collation.exists('test') > >>+ | --- > >>+ | - true > >>+ | ... > >>+ > >>+test_run:cmd('restart server default') > >>+ | > >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>+ | --- > >>+ | ... > >>+ > >>+box.internal.collation.exists('test') > >>+ | --- > >>+ | - true > >>+ | ... > >>+box.internal.collation.drop('test') > >>+ | --- > >>+ | ... > >>+ > >>+box.space._collation:auto_increment{'test'} > >>+ | --- > >>+ | - error: Tuple field 3 required by space format is missing > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU'} > >>+ | --- > >>+ | - error: Tuple field 5 required by space format is missing > >>+ | ... > >>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} > >>+ | --- > >>+ | - error: 'Tuple field 3 type does not match one required by operation: expected unsigned' > >>+ | ... > >>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} > >>+ | --- > >>+ | - error: 'Tuple field 2 type does not match one required by operation: expected string' > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} > >>+ | --- > >>+ | - error: 'Tuple field 4 type does not match one required by operation: expected string' > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} > >>+ | --- > >>+ | - error: 'Tuple field 5 type does not match one required by operation: expected string' > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok > >>+ | --- > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>+ | --- > >>+ | - error: Duplicate key exists in unique index 'name' in space '_collation' > >>+ | ... > >>+box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>+box.space._collation.index.name:delete{'nothing'} -- allowed > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} > >>+ | --- > >>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} > >>+ | --- > >>+ | - error: 'Tuple field 6 type does not match one required by operation: expected map' > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} > >>+ | --- > >>+ | - error: 'Wrong collation options (field 5): unexpected option ''ping''' > >>+ | ... > >>+opts = {normalization_mode='NORMAL'} > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong normalization_mode option setting, > >>+ | expected ON | OFF.' > >>+ | ... > >>+opts.normalization_mode = 'OFF' > >>+ | --- > >>+ | ... > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok > >>+ | --- > >>+ | ... > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | ... > >>+opts.numeric_collation = 'PERL' > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong numeric_collation option setting, > >>+ | expected ON | OFF.' > >>+ | ... > >>+opts.numeric_collation = 'ON' > >>+ | --- > >>+ | ... > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+ | --- > >>+ | ... > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | ... > >>+opts.alternate_handling1 = 'ON' > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Wrong collation options (field 5): unexpected option ''alternate_handling1''' > >>+ | ... > >>+opts.alternate_handling1 = nil > >>+ | --- > >>+ | ... > >>+opts.alternate_handling = 'ON' > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong alternate_handling option setting, > >>+ | expected NON_IGNORABLE | SHIFTED.' > >>+ | ... > >>+opts.alternate_handling = 'SHIFTED' > >>+ | --- > >>+ | ... > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+ | --- > >>+ | ... > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | ... > >>+opts.case_first = 'ON' > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong case_first option setting, expected > >>+ | OFF | UPPER_FIRST | LOWER_FIRST.' > >>+ | ... > >>+opts.case_first = 'OFF' > >>+ | --- > >>+ | ... > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+ | --- > >>+ | ... > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | ... > >>+opts.case_level = 'UPPER' > >>+ | --- > >>+ | ... > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected > >>+ | ON | OFF.' > >>+ | ... > >>+opts.case_level = 'DEFAULT' > >>+ | --- > >>+ | ... > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+ | --- > >>+ | - error: 'Failed to initialize collation: ICU wrong case_level option setting, expected > >>+ | ON | OFF.' > >>+ | ... > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ | --- > >>+ | ... > >>+ > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>+ | --- > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>+box.space._collation:select{} > >>+ | --- > >>+ | - - [0, 'none', 1, 'BINARY', '', {}] > >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] > >>+ | - [3, 'binary', 1, 'BINARY', '', {}] > >>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] > >>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] > >>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] > >>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] > >>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] > >>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] > >>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] > >>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] > >>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] > >>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] > >>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] > >>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] > >>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] > >>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] > >>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] > >>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] > >>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] > >>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] > >>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] > >>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] > >>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] > >>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] > >>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] > >>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] > >>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] > >>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] > >>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] > >>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] > >>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] > >>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] > >>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] > >>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] > >>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] > >>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] > >>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] > >>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] > >>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] > >>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] > >>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] > >>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] > >>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] > >>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] > >>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] > >>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] > >>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] > >>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] > >>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] > >>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] > >>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] > >>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] > >>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] > >>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] > >>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] > >>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] > >>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] > >>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] > >>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] > >>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] > >>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] > >>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] > >>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] > >>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] > >>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] > >>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] > >>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] > >>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] > >>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] > >>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] > >>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] > >>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] > >>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] > >>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] > >>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] > >>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] > >>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] > >>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] > >>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] > >>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] > >>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] > >>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] > >>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] > >>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] > >>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] > >>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] > >>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] > >>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] > >>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] > >>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] > >>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] > >>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] > >>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] > >>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] > >>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] > >>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] > >>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] > >>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] > >>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] > >>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] > >>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] > >>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] > >>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] > >>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] > >>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] > >>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] > >>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] > >>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] > >>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] > >>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] > >>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] > >>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] > >>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] > >>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] > >>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] > >>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] > >>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] > >>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] > >>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] > >>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] > >>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] > >>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] > >>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] > >>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] > >>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] > >>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] > >>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] > >>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] > >>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] > >>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] > >>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] > >>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] > >>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] > >>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] > >>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] > >>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] > >>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] > >>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] > >>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] > >>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] > >>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] > >>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] > >>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] > >>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] > >>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] > >>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] > >>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] > >>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] > >>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] > >>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] > >>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] > >>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] > >>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] > >>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] > >>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] > >>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] > >>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] > >>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] > >>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] > >>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] > >>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] > >>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] > >>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] > >>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] > >>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] > >>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] > >>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] > >>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] > >>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] > >>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] > >>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] > >>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] > >>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] > >>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] > >>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] > >>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] > >>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] > >>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] > >>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] > >>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] > >>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] > >>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] > >>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] > >>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] > >>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] > >>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] > >>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] > >>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] > >>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] > >>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] > >>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] > >>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] > >>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] > >>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] > >>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] > >>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] > >>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] > >>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] > >>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] > >>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] > >>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] > >>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] > >>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] > >>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] > >>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] > >>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] > >>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] > >>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] > >>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] > >>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] > >>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] > >>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] > >>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] > >>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] > >>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] > >>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] > >>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] > >>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] > >>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] > >>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] > >>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] > >>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] > >>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] > >>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] > >>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] > >>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] > >>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] > >>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] > >>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] > >>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] > >>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] > >>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] > >>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] > >>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] > >>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] > >>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] > >>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] > >>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] > >>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] > >>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] > >>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] > >>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] > >>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] > >>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] > >>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] > >>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] > >>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] > >>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] > >>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] > >>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] > >>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] > >>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] > >>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] > >>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] > >>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] > >>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] > >>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] > >>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] > >>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] > >>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] > >>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] > >>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] > >>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] > >>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] > >>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] > >>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>+test_run:cmd('restart server default') > >>+ | > >>+box.space._collation:select{} > >>+ | --- > >>+ | - - [0, 'none', 1, 'BINARY', '', {}] > >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>+ | - [2, 'unicode_ci', 1, 'ICU', '', {'strength': 'primary'}] > >>+ | - [3, 'binary', 1, 'BINARY', '', {}] > >>+ | - [4, 'unicode_af_s1', 1, 'ICU', 'af', {'strength': 'primary'}] > >>+ | - [5, 'unicode_af_s2', 1, 'ICU', 'af', {'strength': 'secondary'}] > >>+ | - [6, 'unicode_af_s3', 1, 'ICU', 'af', {'strength': 'tertiary'}] > >>+ | - [7, 'unicode_am_s1', 1, 'ICU', 'am', {'strength': 'primary'}] > >>+ | - [8, 'unicode_am_s2', 1, 'ICU', 'am', {'strength': 'secondary'}] > >>+ | - [9, 'unicode_am_s3', 1, 'ICU', 'am', {'strength': 'tertiary'}] > >>+ | - [10, 'unicode_ar_s1', 1, 'ICU', 'ar', {'strength': 'primary'}] > >>+ | - [11, 'unicode_ar_s2', 1, 'ICU', 'ar', {'strength': 'secondary'}] > >>+ | - [12, 'unicode_ar_s3', 1, 'ICU', 'ar', {'strength': 'tertiary'}] > >>+ | - [13, 'unicode_as_s1', 1, 'ICU', 'as', {'strength': 'primary'}] > >>+ | - [14, 'unicode_as_s2', 1, 'ICU', 'as', {'strength': 'secondary'}] > >>+ | - [15, 'unicode_as_s3', 1, 'ICU', 'as', {'strength': 'tertiary'}] > >>+ | - [16, 'unicode_az_s1', 1, 'ICU', 'az', {'strength': 'primary'}] > >>+ | - [17, 'unicode_az_s2', 1, 'ICU', 'az', {'strength': 'secondary'}] > >>+ | - [18, 'unicode_az_s3', 1, 'ICU', 'az', {'strength': 'tertiary'}] > >>+ | - [19, 'unicode_be_s1', 1, 'ICU', 'be', {'strength': 'primary'}] > >>+ | - [20, 'unicode_be_s2', 1, 'ICU', 'be', {'strength': 'secondary'}] > >>+ | - [21, 'unicode_be_s3', 1, 'ICU', 'be', {'strength': 'tertiary'}] > >>+ | - [22, 'unicode_bn_s1', 1, 'ICU', 'bn', {'strength': 'primary'}] > >>+ | - [23, 'unicode_bn_s2', 1, 'ICU', 'bn', {'strength': 'secondary'}] > >>+ | - [24, 'unicode_bn_s3', 1, 'ICU', 'bn', {'strength': 'tertiary'}] > >>+ | - [25, 'unicode_bs_s1', 1, 'ICU', 'bs', {'strength': 'primary'}] > >>+ | - [26, 'unicode_bs_s2', 1, 'ICU', 'bs', {'strength': 'secondary'}] > >>+ | - [27, 'unicode_bs_s3', 1, 'ICU', 'bs', {'strength': 'tertiary'}] > >>+ | - [28, 'unicode_bs_Cyrl_s1', 1, 'ICU', 'bs_Cyrl', {'strength': 'primary'}] > >>+ | - [29, 'unicode_bs_Cyrl_s2', 1, 'ICU', 'bs_Cyrl', {'strength': 'secondary'}] > >>+ | - [30, 'unicode_bs_Cyrl_s3', 1, 'ICU', 'bs_Cyrl', {'strength': 'tertiary'}] > >>+ | - [31, 'unicode_ca_s1', 1, 'ICU', 'ca', {'strength': 'primary'}] > >>+ | - [32, 'unicode_ca_s2', 1, 'ICU', 'ca', {'strength': 'secondary'}] > >>+ | - [33, 'unicode_ca_s3', 1, 'ICU', 'ca', {'strength': 'tertiary'}] > >>+ | - [34, 'unicode_cs_s1', 1, 'ICU', 'cs', {'strength': 'primary'}] > >>+ | - [35, 'unicode_cs_s2', 1, 'ICU', 'cs', {'strength': 'secondary'}] > >>+ | - [36, 'unicode_cs_s3', 1, 'ICU', 'cs', {'strength': 'tertiary'}] > >>+ | - [37, 'unicode_cy_s1', 1, 'ICU', 'cy', {'strength': 'primary'}] > >>+ | - [38, 'unicode_cy_s2', 1, 'ICU', 'cy', {'strength': 'secondary'}] > >>+ | - [39, 'unicode_cy_s3', 1, 'ICU', 'cy', {'strength': 'tertiary'}] > >>+ | - [40, 'unicode_da_s1', 1, 'ICU', 'da', {'strength': 'primary'}] > >>+ | - [41, 'unicode_da_s2', 1, 'ICU', 'da', {'strength': 'secondary'}] > >>+ | - [42, 'unicode_da_s3', 1, 'ICU', 'da', {'strength': 'tertiary'}] > >>+ | - [43, 'unicode_de__phonebook_s1', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [44, 'unicode_de__phonebook_s2', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [45, 'unicode_de__phonebook_s3', 1, 'ICU', 'de_DE_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [46, 'unicode_de_AT_phonebook_s1', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [47, 'unicode_de_AT_phonebook_s2', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [48, 'unicode_de_AT_phonebook_s3', 1, 'ICU', 'de_AT_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [49, 'unicode_dsb_s1', 1, 'ICU', 'dsb', {'strength': 'primary'}] > >>+ | - [50, 'unicode_dsb_s2', 1, 'ICU', 'dsb', {'strength': 'secondary'}] > >>+ | - [51, 'unicode_dsb_s3', 1, 'ICU', 'dsb', {'strength': 'tertiary'}] > >>+ | - [52, 'unicode_ee_s1', 1, 'ICU', 'ee', {'strength': 'primary'}] > >>+ | - [53, 'unicode_ee_s2', 1, 'ICU', 'ee', {'strength': 'secondary'}] > >>+ | - [54, 'unicode_ee_s3', 1, 'ICU', 'ee', {'strength': 'tertiary'}] > >>+ | - [55, 'unicode_eo_s1', 1, 'ICU', 'eo', {'strength': 'primary'}] > >>+ | - [56, 'unicode_eo_s2', 1, 'ICU', 'eo', {'strength': 'secondary'}] > >>+ | - [57, 'unicode_eo_s3', 1, 'ICU', 'eo', {'strength': 'tertiary'}] > >>+ | - [58, 'unicode_es_s1', 1, 'ICU', 'es', {'strength': 'primary'}] > >>+ | - [59, 'unicode_es_s2', 1, 'ICU', 'es', {'strength': 'secondary'}] > >>+ | - [60, 'unicode_es_s3', 1, 'ICU', 'es', {'strength': 'tertiary'}] > >>+ | - [61, 'unicode_es__traditional_s1', 1, 'ICU', 'es_u_co_trad', {'strength': 'primary'}] > >>+ | - [62, 'unicode_es__traditional_s2', 1, 'ICU', 'es_u_co_trad', {'strength': 'secondary'}] > >>+ | - [63, 'unicode_es__traditional_s3', 1, 'ICU', 'es_u_co_trad', {'strength': 'tertiary'}] > >>+ | - [64, 'unicode_et_s1', 1, 'ICU', 'et', {'strength': 'primary'}] > >>+ | - [65, 'unicode_et_s2', 1, 'ICU', 'et', {'strength': 'secondary'}] > >>+ | - [66, 'unicode_et_s3', 1, 'ICU', 'et', {'strength': 'tertiary'}] > >>+ | - [67, 'unicode_fa_s1', 1, 'ICU', 'fa', {'strength': 'primary'}] > >>+ | - [68, 'unicode_fa_s2', 1, 'ICU', 'fa', {'strength': 'secondary'}] > >>+ | - [69, 'unicode_fa_s3', 1, 'ICU', 'fa', {'strength': 'tertiary'}] > >>+ | - [70, 'unicode_fi_s1', 1, 'ICU', 'fi', {'strength': 'primary'}] > >>+ | - [71, 'unicode_fi_s2', 1, 'ICU', 'fi', {'strength': 'secondary'}] > >>+ | - [72, 'unicode_fi_s3', 1, 'ICU', 'fi', {'strength': 'tertiary'}] > >>+ | - [73, 'unicode_fi__phonebook_s1', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'primary'}] > >>+ | - [74, 'unicode_fi__phonebook_s2', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'secondary'}] > >>+ | - [75, 'unicode_fi__phonebook_s3', 1, 'ICU', 'fi_u_co_phonebk', {'strength': 'tertiary'}] > >>+ | - [76, 'unicode_fil_s1', 1, 'ICU', 'fil', {'strength': 'primary'}] > >>+ | - [77, 'unicode_fil_s2', 1, 'ICU', 'fil', {'strength': 'secondary'}] > >>+ | - [78, 'unicode_fil_s3', 1, 'ICU', 'fil', {'strength': 'tertiary'}] > >>+ | - [79, 'unicode_fo_s1', 1, 'ICU', 'fo', {'strength': 'primary'}] > >>+ | - [80, 'unicode_fo_s2', 1, 'ICU', 'fo', {'strength': 'secondary'}] > >>+ | - [81, 'unicode_fo_s3', 1, 'ICU', 'fo', {'strength': 'tertiary'}] > >>+ | - [82, 'unicode_fr_CA_s1', 1, 'ICU', 'fr_CA', {'strength': 'primary'}] > >>+ | - [83, 'unicode_fr_CA_s2', 1, 'ICU', 'fr_CA', {'strength': 'secondary'}] > >>+ | - [84, 'unicode_fr_CA_s3', 1, 'ICU', 'fr_CA', {'strength': 'tertiary'}] > >>+ | - [85, 'unicode_gu_s1', 1, 'ICU', 'gu', {'strength': 'primary'}] > >>+ | - [86, 'unicode_gu_s2', 1, 'ICU', 'gu', {'strength': 'secondary'}] > >>+ | - [87, 'unicode_gu_s3', 1, 'ICU', 'gu', {'strength': 'tertiary'}] > >>+ | - [88, 'unicode_ha_s1', 1, 'ICU', 'ha', {'strength': 'primary'}] > >>+ | - [89, 'unicode_ha_s2', 1, 'ICU', 'ha', {'strength': 'secondary'}] > >>+ | - [90, 'unicode_ha_s3', 1, 'ICU', 'ha', {'strength': 'tertiary'}] > >>+ | - [91, 'unicode_haw_s1', 1, 'ICU', 'haw', {'strength': 'primary'}] > >>+ | - [92, 'unicode_haw_s2', 1, 'ICU', 'haw', {'strength': 'secondary'}] > >>+ | - [93, 'unicode_haw_s3', 1, 'ICU', 'haw', {'strength': 'tertiary'}] > >>+ | - [94, 'unicode_he_s1', 1, 'ICU', 'he', {'strength': 'primary'}] > >>+ | - [95, 'unicode_he_s2', 1, 'ICU', 'he', {'strength': 'secondary'}] > >>+ | - [96, 'unicode_he_s3', 1, 'ICU', 'he', {'strength': 'tertiary'}] > >>+ | - [97, 'unicode_hi_s1', 1, 'ICU', 'hi', {'strength': 'primary'}] > >>+ | - [98, 'unicode_hi_s2', 1, 'ICU', 'hi', {'strength': 'secondary'}] > >>+ | - [99, 'unicode_hi_s3', 1, 'ICU', 'hi', {'strength': 'tertiary'}] > >>+ | - [100, 'unicode_hr_s1', 1, 'ICU', 'hr', {'strength': 'primary'}] > >>+ | - [101, 'unicode_hr_s2', 1, 'ICU', 'hr', {'strength': 'secondary'}] > >>+ | - [102, 'unicode_hr_s3', 1, 'ICU', 'hr', {'strength': 'tertiary'}] > >>+ | - [103, 'unicode_hu_s1', 1, 'ICU', 'hu', {'strength': 'primary'}] > >>+ | - [104, 'unicode_hu_s2', 1, 'ICU', 'hu', {'strength': 'secondary'}] > >>+ | - [105, 'unicode_hu_s3', 1, 'ICU', 'hu', {'strength': 'tertiary'}] > >>+ | - [106, 'unicode_hy_s1', 1, 'ICU', 'hy', {'strength': 'primary'}] > >>+ | - [107, 'unicode_hy_s2', 1, 'ICU', 'hy', {'strength': 'secondary'}] > >>+ | - [108, 'unicode_hy_s3', 1, 'ICU', 'hy', {'strength': 'tertiary'}] > >>+ | - [109, 'unicode_ig_s1', 1, 'ICU', 'ig', {'strength': 'primary'}] > >>+ | - [110, 'unicode_ig_s2', 1, 'ICU', 'ig', {'strength': 'secondary'}] > >>+ | - [111, 'unicode_ig_s3', 1, 'ICU', 'ig', {'strength': 'tertiary'}] > >>+ | - [112, 'unicode_is_s1', 1, 'ICU', 'is', {'strength': 'primary'}] > >>+ | - [113, 'unicode_is_s2', 1, 'ICU', 'is', {'strength': 'secondary'}] > >>+ | - [114, 'unicode_is_s3', 1, 'ICU', 'is', {'strength': 'tertiary'}] > >>+ | - [115, 'unicode_ja_s1', 1, 'ICU', 'ja', {'strength': 'primary'}] > >>+ | - [116, 'unicode_ja_s2', 1, 'ICU', 'ja', {'strength': 'secondary'}] > >>+ | - [117, 'unicode_ja_s3', 1, 'ICU', 'ja', {'strength': 'tertiary'}] > >>+ | - [118, 'unicode_kk_s1', 1, 'ICU', 'kk', {'strength': 'primary'}] > >>+ | - [119, 'unicode_kk_s2', 1, 'ICU', 'kk', {'strength': 'secondary'}] > >>+ | - [120, 'unicode_kk_s3', 1, 'ICU', 'kk', {'strength': 'tertiary'}] > >>+ | - [121, 'unicode_kl_s1', 1, 'ICU', 'kl', {'strength': 'primary'}] > >>+ | - [122, 'unicode_kl_s2', 1, 'ICU', 'kl', {'strength': 'secondary'}] > >>+ | - [123, 'unicode_kl_s3', 1, 'ICU', 'kl', {'strength': 'tertiary'}] > >>+ | - [124, 'unicode_kn_s1', 1, 'ICU', 'kn', {'strength': 'primary'}] > >>+ | - [125, 'unicode_kn_s2', 1, 'ICU', 'kn', {'strength': 'secondary'}] > >>+ | - [126, 'unicode_kn_s3', 1, 'ICU', 'kn', {'strength': 'tertiary'}] > >>+ | - [127, 'unicode_ko_s1', 1, 'ICU', 'ko', {'strength': 'primary'}] > >>+ | - [128, 'unicode_ko_s2', 1, 'ICU', 'ko', {'strength': 'secondary'}] > >>+ | - [129, 'unicode_ko_s3', 1, 'ICU', 'ko', {'strength': 'tertiary'}] > >>+ | - [130, 'unicode_kok_s1', 1, 'ICU', 'kok', {'strength': 'primary'}] > >>+ | - [131, 'unicode_kok_s2', 1, 'ICU', 'kok', {'strength': 'secondary'}] > >>+ | - [132, 'unicode_kok_s3', 1, 'ICU', 'kok', {'strength': 'tertiary'}] > >>+ | - [133, 'unicode_ky_s1', 1, 'ICU', 'ky', {'strength': 'primary'}] > >>+ | - [134, 'unicode_ky_s2', 1, 'ICU', 'ky', {'strength': 'secondary'}] > >>+ | - [135, 'unicode_ky_s3', 1, 'ICU', 'ky', {'strength': 'tertiary'}] > >>+ | - [136, 'unicode_lkt_s1', 1, 'ICU', 'lkt', {'strength': 'primary'}] > >>+ | - [137, 'unicode_lkt_s2', 1, 'ICU', 'lkt', {'strength': 'secondary'}] > >>+ | - [138, 'unicode_lkt_s3', 1, 'ICU', 'lkt', {'strength': 'tertiary'}] > >>+ | - [139, 'unicode_ln_s1', 1, 'ICU', 'ln', {'strength': 'primary'}] > >>+ | - [140, 'unicode_ln_s2', 1, 'ICU', 'ln', {'strength': 'secondary'}] > >>+ | - [141, 'unicode_ln_s3', 1, 'ICU', 'ln', {'strength': 'tertiary'}] > >>+ | - [142, 'unicode_lt_s1', 1, 'ICU', 'lt', {'strength': 'primary'}] > >>+ | - [143, 'unicode_lt_s2', 1, 'ICU', 'lt', {'strength': 'secondary'}] > >>+ | - [144, 'unicode_lt_s3', 1, 'ICU', 'lt', {'strength': 'tertiary'}] > >>+ | - [145, 'unicode_lv_s1', 1, 'ICU', 'lv', {'strength': 'primary'}] > >>+ | - [146, 'unicode_lv_s2', 1, 'ICU', 'lv', {'strength': 'secondary'}] > >>+ | - [147, 'unicode_lv_s3', 1, 'ICU', 'lv', {'strength': 'tertiary'}] > >>+ | - [148, 'unicode_mk_s1', 1, 'ICU', 'mk', {'strength': 'primary'}] > >>+ | - [149, 'unicode_mk_s2', 1, 'ICU', 'mk', {'strength': 'secondary'}] > >>+ | - [150, 'unicode_mk_s3', 1, 'ICU', 'mk', {'strength': 'tertiary'}] > >>+ | - [151, 'unicode_ml_s1', 1, 'ICU', 'ml', {'strength': 'primary'}] > >>+ | - [152, 'unicode_ml_s2', 1, 'ICU', 'ml', {'strength': 'secondary'}] > >>+ | - [153, 'unicode_ml_s3', 1, 'ICU', 'ml', {'strength': 'tertiary'}] > >>+ | - [154, 'unicode_mr_s1', 1, 'ICU', 'mr', {'strength': 'primary'}] > >>+ | - [155, 'unicode_mr_s2', 1, 'ICU', 'mr', {'strength': 'secondary'}] > >>+ | - [156, 'unicode_mr_s3', 1, 'ICU', 'mr', {'strength': 'tertiary'}] > >>+ | - [157, 'unicode_mt_s1', 1, 'ICU', 'mt', {'strength': 'primary'}] > >>+ | - [158, 'unicode_mt_s2', 1, 'ICU', 'mt', {'strength': 'secondary'}] > >>+ | - [159, 'unicode_mt_s3', 1, 'ICU', 'mt', {'strength': 'tertiary'}] > >>+ | - [160, 'unicode_nb_s1', 1, 'ICU', 'nb', {'strength': 'primary'}] > >>+ | - [161, 'unicode_nb_s2', 1, 'ICU', 'nb', {'strength': 'secondary'}] > >>+ | - [162, 'unicode_nb_s3', 1, 'ICU', 'nb', {'strength': 'tertiary'}] > >>+ | - [163, 'unicode_nn_s1', 1, 'ICU', 'nn', {'strength': 'primary'}] > >>+ | - [164, 'unicode_nn_s2', 1, 'ICU', 'nn', {'strength': 'secondary'}] > >>+ | - [165, 'unicode_nn_s3', 1, 'ICU', 'nn', {'strength': 'tertiary'}] > >>+ | - [166, 'unicode_nso_s1', 1, 'ICU', 'nso', {'strength': 'primary'}] > >>+ | - [167, 'unicode_nso_s2', 1, 'ICU', 'nso', {'strength': 'secondary'}] > >>+ | - [168, 'unicode_nso_s3', 1, 'ICU', 'nso', {'strength': 'tertiary'}] > >>+ | - [169, 'unicode_om_s1', 1, 'ICU', 'om', {'strength': 'primary'}] > >>+ | - [170, 'unicode_om_s2', 1, 'ICU', 'om', {'strength': 'secondary'}] > >>+ | - [171, 'unicode_om_s3', 1, 'ICU', 'om', {'strength': 'tertiary'}] > >>+ | - [172, 'unicode_or_s1', 1, 'ICU', 'or', {'strength': 'primary'}] > >>+ | - [173, 'unicode_or_s2', 1, 'ICU', 'or', {'strength': 'secondary'}] > >>+ | - [174, 'unicode_or_s3', 1, 'ICU', 'or', {'strength': 'tertiary'}] > >>+ | - [175, 'unicode_pa_s1', 1, 'ICU', 'pa', {'strength': 'primary'}] > >>+ | - [176, 'unicode_pa_s2', 1, 'ICU', 'pa', {'strength': 'secondary'}] > >>+ | - [177, 'unicode_pa_s3', 1, 'ICU', 'pa', {'strength': 'tertiary'}] > >>+ | - [178, 'unicode_pl_s1', 1, 'ICU', 'pl', {'strength': 'primary'}] > >>+ | - [179, 'unicode_pl_s2', 1, 'ICU', 'pl', {'strength': 'secondary'}] > >>+ | - [180, 'unicode_pl_s3', 1, 'ICU', 'pl', {'strength': 'tertiary'}] > >>+ | - [181, 'unicode_ro_s1', 1, 'ICU', 'ro', {'strength': 'primary'}] > >>+ | - [182, 'unicode_ro_s2', 1, 'ICU', 'ro', {'strength': 'secondary'}] > >>+ | - [183, 'unicode_ro_s3', 1, 'ICU', 'ro', {'strength': 'tertiary'}] > >>+ | - [184, 'unicode_sa_s1', 1, 'ICU', 'sa', {'strength': 'primary'}] > >>+ | - [185, 'unicode_sa_s2', 1, 'ICU', 'sa', {'strength': 'secondary'}] > >>+ | - [186, 'unicode_sa_s3', 1, 'ICU', 'sa', {'strength': 'tertiary'}] > >>+ | - [187, 'unicode_se_s1', 1, 'ICU', 'se', {'strength': 'primary'}] > >>+ | - [188, 'unicode_se_s2', 1, 'ICU', 'se', {'strength': 'secondary'}] > >>+ | - [189, 'unicode_se_s3', 1, 'ICU', 'se', {'strength': 'tertiary'}] > >>+ | - [190, 'unicode_si_s1', 1, 'ICU', 'si', {'strength': 'primary'}] > >>+ | - [191, 'unicode_si_s2', 1, 'ICU', 'si', {'strength': 'secondary'}] > >>+ | - [192, 'unicode_si_s3', 1, 'ICU', 'si', {'strength': 'tertiary'}] > >>+ | - [193, 'unicode_si__dictionary_s1', 1, 'ICU', 'si_u_co_dict', {'strength': 'primary'}] > >>+ | - [194, 'unicode_si__dictionary_s2', 1, 'ICU', 'si_u_co_dict', {'strength': 'secondary'}] > >>+ | - [195, 'unicode_si__dictionary_s3', 1, 'ICU', 'si_u_co_dict', {'strength': 'tertiary'}] > >>+ | - [196, 'unicode_sk_s1', 1, 'ICU', 'sk', {'strength': 'primary'}] > >>+ | - [197, 'unicode_sk_s2', 1, 'ICU', 'sk', {'strength': 'secondary'}] > >>+ | - [198, 'unicode_sk_s3', 1, 'ICU', 'sk', {'strength': 'tertiary'}] > >>+ | - [199, 'unicode_sl_s1', 1, 'ICU', 'sl', {'strength': 'primary'}] > >>+ | - [200, 'unicode_sl_s2', 1, 'ICU', 'sl', {'strength': 'secondary'}] > >>+ | - [201, 'unicode_sl_s3', 1, 'ICU', 'sl', {'strength': 'tertiary'}] > >>+ | - [202, 'unicode_sq_s1', 1, 'ICU', 'sq', {'strength': 'primary'}] > >>+ | - [203, 'unicode_sq_s2', 1, 'ICU', 'sq', {'strength': 'secondary'}] > >>+ | - [204, 'unicode_sq_s3', 1, 'ICU', 'sq', {'strength': 'tertiary'}] > >>+ | - [205, 'unicode_sr_s1', 1, 'ICU', 'sr', {'strength': 'primary'}] > >>+ | - [206, 'unicode_sr_s2', 1, 'ICU', 'sr', {'strength': 'secondary'}] > >>+ | - [207, 'unicode_sr_s3', 1, 'ICU', 'sr', {'strength': 'tertiary'}] > >>+ | - [208, 'unicode_sr_Latn_s1', 1, 'ICU', 'sr_Latn', {'strength': 'primary'}] > >>+ | - [209, 'unicode_sr_Latn_s2', 1, 'ICU', 'sr_Latn', {'strength': 'secondary'}] > >>+ | - [210, 'unicode_sr_Latn_s3', 1, 'ICU', 'sr_Latn', {'strength': 'tertiary'}] > >>+ | - [211, 'unicode_sv_s1', 1, 'ICU', 'sv', {'strength': 'primary'}] > >>+ | - [212, 'unicode_sv_s2', 1, 'ICU', 'sv', {'strength': 'secondary'}] > >>+ | - [213, 'unicode_sv_s3', 1, 'ICU', 'sv', {'strength': 'tertiary'}] > >>+ | - [214, 'unicode_sv__reformed_s1', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'primary'}] > >>+ | - [215, 'unicode_sv__reformed_s2', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'secondary'}] > >>+ | - [216, 'unicode_sv__reformed_s3', 1, 'ICU', 'sv_u_co_reformed', {'strength': 'tertiary'}] > >>+ | - [217, 'unicode_ta_s1', 1, 'ICU', 'ta', {'strength': 'primary'}] > >>+ | - [218, 'unicode_ta_s2', 1, 'ICU', 'ta', {'strength': 'secondary'}] > >>+ | - [219, 'unicode_ta_s3', 1, 'ICU', 'ta', {'strength': 'tertiary'}] > >>+ | - [220, 'unicode_te_s1', 1, 'ICU', 'te', {'strength': 'primary'}] > >>+ | - [221, 'unicode_te_s2', 1, 'ICU', 'te', {'strength': 'secondary'}] > >>+ | - [222, 'unicode_te_s3', 1, 'ICU', 'te', {'strength': 'tertiary'}] > >>+ | - [223, 'unicode_th_s1', 1, 'ICU', 'th', {'strength': 'primary'}] > >>+ | - [224, 'unicode_th_s2', 1, 'ICU', 'th', {'strength': 'secondary'}] > >>+ | - [225, 'unicode_th_s3', 1, 'ICU', 'th', {'strength': 'tertiary'}] > >>+ | - [226, 'unicode_tn_s1', 1, 'ICU', 'tn', {'strength': 'primary'}] > >>+ | - [227, 'unicode_tn_s2', 1, 'ICU', 'tn', {'strength': 'secondary'}] > >>+ | - [228, 'unicode_tn_s3', 1, 'ICU', 'tn', {'strength': 'tertiary'}] > >>+ | - [229, 'unicode_to_s1', 1, 'ICU', 'to', {'strength': 'primary'}] > >>+ | - [230, 'unicode_to_s2', 1, 'ICU', 'to', {'strength': 'secondary'}] > >>+ | - [231, 'unicode_to_s3', 1, 'ICU', 'to', {'strength': 'tertiary'}] > >>+ | - [232, 'unicode_tr_s1', 1, 'ICU', 'tr', {'strength': 'primary'}] > >>+ | - [233, 'unicode_tr_s2', 1, 'ICU', 'tr', {'strength': 'secondary'}] > >>+ | - [234, 'unicode_tr_s3', 1, 'ICU', 'tr', {'strength': 'tertiary'}] > >>+ | - [235, 'unicode_ug_Cyrl_s1', 1, 'ICU', 'ug', {'strength': 'primary'}] > >>+ | - [236, 'unicode_ug_Cyrl_s2', 1, 'ICU', 'ug', {'strength': 'secondary'}] > >>+ | - [237, 'unicode_ug_Cyrl_s3', 1, 'ICU', 'ug', {'strength': 'tertiary'}] > >>+ | - [238, 'unicode_uk_s1', 1, 'ICU', 'uk', {'strength': 'primary'}] > >>+ | - [239, 'unicode_uk_s2', 1, 'ICU', 'uk', {'strength': 'secondary'}] > >>+ | - [240, 'unicode_uk_s3', 1, 'ICU', 'uk', {'strength': 'tertiary'}] > >>+ | - [241, 'unicode_ur_s1', 1, 'ICU', 'ur', {'strength': 'primary'}] > >>+ | - [242, 'unicode_ur_s2', 1, 'ICU', 'ur', {'strength': 'secondary'}] > >>+ | - [243, 'unicode_ur_s3', 1, 'ICU', 'ur', {'strength': 'tertiary'}] > >>+ | - [244, 'unicode_vi_s1', 1, 'ICU', 'vi', {'strength': 'primary'}] > >>+ | - [245, 'unicode_vi_s2', 1, 'ICU', 'vi', {'strength': 'secondary'}] > >>+ | - [246, 'unicode_vi_s3', 1, 'ICU', 'vi', {'strength': 'tertiary'}] > >>+ | - [247, 'unicode_vo_s1', 1, 'ICU', 'vo', {'strength': 'primary'}] > >>+ | - [248, 'unicode_vo_s2', 1, 'ICU', 'vo', {'strength': 'secondary'}] > >>+ | - [249, 'unicode_vo_s3', 1, 'ICU', 'vo', {'strength': 'tertiary'}] > >>+ | - [250, 'unicode_wae_s1', 1, 'ICU', 'wae', {'strength': 'primary'}] > >>+ | - [251, 'unicode_wae_s2', 1, 'ICU', 'wae', {'strength': 'secondary'}] > >>+ | - [252, 'unicode_wae_s3', 1, 'ICU', 'wae', {'strength': 'tertiary'}] > >>+ | - [253, 'unicode_wo_s1', 1, 'ICU', 'wo', {'strength': 'primary'}] > >>+ | - [254, 'unicode_wo_s2', 1, 'ICU', 'wo', {'strength': 'secondary'}] > >>+ | - [255, 'unicode_wo_s3', 1, 'ICU', 'wo', {'strength': 'tertiary'}] > >>+ | - [256, 'unicode_yo_s1', 1, 'ICU', 'yo', {'strength': 'primary'}] > >>+ | - [257, 'unicode_yo_s2', 1, 'ICU', 'yo', {'strength': 'secondary'}] > >>+ | - [258, 'unicode_yo_s3', 1, 'ICU', 'yo', {'strength': 'tertiary'}] > >>+ | - [259, 'unicode_zh_s1', 1, 'ICU', 'zh', {'strength': 'primary'}] > >>+ | - [260, 'unicode_zh_s2', 1, 'ICU', 'zh', {'strength': 'secondary'}] > >>+ | - [261, 'unicode_zh_s3', 1, 'ICU', 'zh', {'strength': 'tertiary'}] > >>+ | - [262, 'unicode_zh__big5han_s1', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'primary'}] > >>+ | - [263, 'unicode_zh__big5han_s2', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'secondary'}] > >>+ | - [264, 'unicode_zh__big5han_s3', 1, 'ICU', 'zh_u_co_big5han', {'strength': 'tertiary'}] > >>+ | - [265, 'unicode_zh__gb2312han_s1', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'primary'}] > >>+ | - [266, 'unicode_zh__gb2312han_s2', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'secondary'}] > >>+ | - [267, 'unicode_zh__gb2312han_s3', 1, 'ICU', 'zh_u_co_gb2312', {'strength': 'tertiary'}] > >>+ | - [268, 'unicode_zh__pinyin_s1', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'primary'}] > >>+ | - [269, 'unicode_zh__pinyin_s2', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'secondary'}] > >>+ | - [270, 'unicode_zh__pinyin_s3', 1, 'ICU', 'zh_u_co_pinyin', {'strength': 'tertiary'}] > >>+ | - [271, 'unicode_zh__stroke_s1', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'primary'}] > >>+ | - [272, 'unicode_zh__stroke_s2', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'secondary'}] > >>+ | - [273, 'unicode_zh__stroke_s3', 1, 'ICU', 'zh_u_co_stroke', {'strength': 'tertiary'}] > >>+ | - [274, 'unicode_zh__zhuyin_s1', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'primary'}] > >>+ | - [275, 'unicode_zh__zhuyin_s2', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'secondary'}] > >>+ | - [276, 'unicode_zh__zhuyin_s3', 1, 'ICU', 'zh_u_co_zhuyin', {'strength': 'tertiary'}] > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>+box.space._collation.index.name:delete{'test'} > >>+ | --- > >>+ | - [277, 'test', 0, 'ICU', 'ru_RU', {}] > >>+ | ... > >>diff --git a/test/box/ddl_collation.test.lua b/test/box/ddl_collation.test.lua > >>new file mode 100644 > >>index 000000000..ee26af9c6 > >>--- /dev/null > >>+++ b/test/box/ddl_collation.test.lua > >>@@ -0,0 +1,90 @@ > >>+env = require('test_run') > >>+test_run = env.new() > >>+ > >>+-- collation > >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>+ > >>+box.internal.collation.create('test') > >>+box.internal.collation.create('test', 'ICU') > >>+box.internal.collation.create(42, 'ICU', 'ru_RU') > >>+box.internal.collation.create('test', 42, 'ru_RU') > >>+box.internal.collation.create('test', 'ICU', 42) > >>+box.internal.collation.create('test', 'nothing', 'ru_RU') > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', setmap{}) --ok > >>+box.internal.collation.create('test', 'ICU', 'ru_RU') > >>+box.internal.collation.drop('test') > >>+box.internal.collation.drop('nothing') -- allowed > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 42) > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', 'options') > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {ping='pong'}) > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='german'}) > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {french_collation='on'}) --ok > >>+box.internal.collation.drop('test') --ok > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='supervillian'}) > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=42}) > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength=2}) --ok > >>+box.internal.collation.drop('test') --ok > >>+box.internal.collation.create('test', 'ICU', 'ru_RU', {strength='primary'}) --ok > >>+box.internal.collation.drop('test') --ok > >>+c = box.space._collation:get{1}:totable() > >>+c[2] = 'unicode_test' > >>+box.space._collation:replace(c) > >>+ > >>+box.begin() box.internal.collation.create('test2', 'ICU', 'ru_RU') box.rollback() > >>+ > >>+box.internal.collation.create('test', 'ICU', 'ru_RU') > >>+box.internal.collation.exists('test') > >>+ > >>+test_run:cmd('restart server default') > >>+function setmap(table) return setmetatable(table, { __serialize = 'map' }) end > >>+ > >>+box.internal.collation.exists('test') > >>+box.internal.collation.drop('test') > >>+ > >>+box.space._collation:auto_increment{'test'} > >>+box.space._collation:auto_increment{'test', 0, 'ICU'} > >>+box.space._collation:auto_increment{'test', 'ADMIN', 'ICU', 'ru_RU'} > >>+box.space._collation:auto_increment{42, 0, 'ICU', 'ru_RU'} > >>+box.space._collation:auto_increment{'test', 0, 42, 'ru_RU'} > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 42} > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} --ok > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>+box.space._collation.index.name:delete{'test'} -- ok > >>+box.space._collation.index.name:delete{'nothing'} -- allowed > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 42} > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', 'options'} > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', {ping='pong'}} > >>+opts = {normalization_mode='NORMAL'} > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.normalization_mode = 'OFF' > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} -- ok > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+opts.numeric_collation = 'PERL' > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.numeric_collation = 'ON' > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+opts.alternate_handling1 = 'ON' > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.alternate_handling1 = nil > >>+opts.alternate_handling = 'ON' > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.alternate_handling = 'SHIFTED' > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+opts.case_first = 'ON' > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.case_first = 'OFF' > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+opts.case_level = 'UPPER' > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} > >>+opts.case_level = 'DEFAULT' > >>+_ = box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', opts} --ok > >>+_ = box.space._collation.index.name:delete{'test'} -- ok > >>+ > >>+box.space._collation:auto_increment{'test', 0, 'ICU', 'ru_RU', setmap{}} > >>+box.space._collation:select{} > >>+test_run:cmd('restart server default') > >>+box.space._collation:select{} > >>+box.space._collation.index.name:delete{'test'} > >>diff --git a/test/box/ddl_collation_types.result b/test/box/ddl_collation_types.result > >>new file mode 100644 > >>index 000000000..7eaef62c0 > >>--- /dev/null > >>+++ b/test/box/ddl_collation_types.result > >>@@ -0,0 +1,21 @@ > >>+-- test-run result file version 2 > >>+-- Check that collation is allowed only for strings, scalar and any types. > >>+format = {} > >>+ | --- > >>+ | ... > >>+format[1] = {'field1', 'unsigned', collation = 'unicode'} > >>+ | --- > >>+ | ... > >>+s = box.schema.create_space('test', {format = format}) > >>+ | --- > >>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, > >>+ | scalar and any fields' > >>+ | ... > >>+format[1] = {'field2', 'array', collation = 'unicode_ci'} > >>+ | --- > >>+ | ... > >>+s = box.schema.create_space('test', {format = format}) > >>+ | --- > >>+ | - error: 'Failed to create space ''test'': collation is reasonable only for string, > >>+ | scalar and any fields' > >>+ | ... > >>diff --git a/test/box/ddl_collation_types.test.lua b/test/box/ddl_collation_types.test.lua > >>new file mode 100644 > >>index 000000000..5930d54b0 > >>--- /dev/null > >>+++ b/test/box/ddl_collation_types.test.lua > >>@@ -0,0 +1,6 @@ > >>+-- Check that collation is allowed only for strings, scalar and any types. > >>+format = {} > >>+format[1] = {'field1', 'unsigned', collation = 'unicode'} > >>+s = box.schema.create_space('test', {format = format}) > >>+format[1] = {'field2', 'array', collation = 'unicode_ci'} > >>+s = box.schema.create_space('test', {format = format}) > >>diff --git a/test/box/ddl_collation_wrong_id.result b/test/box/ddl_collation_wrong_id.result > >>new file mode 100644 > >>index 000000000..c6cf058b1 > >>--- /dev/null > >>+++ b/test/box/ddl_collation_wrong_id.result > >>@@ -0,0 +1,21 @@ > >>+-- test-run result file version 2 > >>+-- Check that error is raised when collation with wrong id is used. > >>+_space = box.space[box.schema.SPACE_ID] > >>+ | --- > >>+ | ... > >>+utils = require('utils') > >>+ | --- > >>+ | ... > >>+EMPTY_MAP = utils.setmap({}) > >>+ | --- > >>+ | ... > >>+format = {{name = 'field1', type = 'string', collation = 666}} > >>+ | --- > >>+ | ... > >>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} > >>+ | --- > >>+ | ... > >>+_space:insert(surrogate_space) > >>+ | --- > >>+ | - error: 'Wrong collation options (field 1): collation was not found by ID' > >>+ | ... > >>diff --git a/test/box/ddl_collation_wrong_id.test.lua b/test/box/ddl_collation_wrong_id.test.lua > >>new file mode 100644 > >>index 000000000..8d28d3ee1 > >>--- /dev/null > >>+++ b/test/box/ddl_collation_wrong_id.test.lua > >>@@ -0,0 +1,7 @@ > >>+-- Check that error is raised when collation with wrong id is used. > >>+_space = box.space[box.schema.SPACE_ID] > >>+utils = require('utils') > >>+EMPTY_MAP = utils.setmap({}) > >>+format = {{name = 'field1', type = 'string', collation = 666}} > >>+surrogate_space = {12345, 1, 'test', 'memtx', 0, EMPTY_MAP, format} > >>+_space:insert(surrogate_space) > >>diff --git a/test/box/ddl_no_collation.result b/test/box/ddl_no_collation.result > >>new file mode 100644 > >>index 000000000..6f4e8fa0b > >>--- /dev/null > >>+++ b/test/box/ddl_no_collation.result > >>@@ -0,0 +1,12 @@ > >>+-- test-run result file version 2 > >>+-- Check that error is raised when collation doesn't exists. > >>+format = {} > >>+ | --- > >>+ | ... > >>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} > >>+ | --- > >>+ | ... > >>+s = box.schema.create_space('test', {format = format}) > >>+ | --- > >>+ | - error: 'Illegal parameters, format[1]: collation was not found by name ''test_coll''' > >>+ | ... > >>diff --git a/test/box/ddl_no_collation.test.lua b/test/box/ddl_no_collation.test.lua > >>new file mode 100644 > >>index 000000000..3e411373b > >>--- /dev/null > >>+++ b/test/box/ddl_no_collation.test.lua > >>@@ -0,0 +1,4 @@ > >>+-- Check that error is raised when collation doesn't exists. > >>+format = {} > >>+format[1] = {'field1', 'unsigend', collation = 'test_coll'} > >>+s = box.schema.create_space('test', {format = format}) > >>diff --git a/test/box/ddl_parallel.result b/test/box/ddl_parallel.result > >>new file mode 100644 > >>index 000000000..dfa4a1422 > >>--- /dev/null > >>+++ b/test/box/ddl_parallel.result > >>@@ -0,0 +1,61 @@ > >>+-- test-run result file version 2 > >>+env = require('test_run') > >>+ | --- > >>+ | ... > >>+test_run = env.new() > >>+ | --- > >>+ | ... > >>+ > >>+fiber = require'fiber' > >>+ | --- > >>+ | ... > >>+ > >>+-- simple test for parallel ddl execution > >>+_ = box.schema.space.create('test'):create_index('pk') > >>+ | --- > >>+ | ... > >>+ > >>+ch = fiber.channel(2) > >>+ | --- > >>+ | ... > >>+ > >>+test_run:cmd("setopt delimiter ';'") > >>+ | --- > >>+ | - true > >>+ | ... > >>+ > >>+function f1() > >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>+ ch:put(true) > >>+end; > >>+ | --- > >>+ | ... > >>+ > >>+function f2() > >>+ box.space.test:create_index('third', {parts = {3, 'string'}}) > >>+ ch:put(true) > >>+end; > >>+ | --- > >>+ | ... > >>+ > >>+test_run:cmd("setopt delimiter ''"); > >>+ | --- > >>+ | - true > >>+ | ... > >>+ > >>+_ = {fiber.create(f1), fiber.create(f2)} > >>+ | --- > >>+ | ... > >>+ > >>+ch:get() > >>+ | --- > >>+ | - true > >>+ | ... > >>+ch:get() > >>+ | --- > >>+ | - true > >>+ | ... > >>+ > >>+_ = box.space.test:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/ddl_parallel.test.lua b/test/box/ddl_parallel.test.lua > >>new file mode 100644 > >>index 000000000..99c3bfdcc > >>--- /dev/null > >>+++ b/test/box/ddl_parallel.test.lua > >>@@ -0,0 +1,30 @@ > >>+env = require('test_run') > >>+test_run = env.new() > >>+ > >>+fiber = require'fiber' > >>+ > >>+-- simple test for parallel ddl execution > >>+_ = box.schema.space.create('test'):create_index('pk') > >>+ > >>+ch = fiber.channel(2) > >>+ > >>+test_run:cmd("setopt delimiter ';'") > >>+ > >>+function f1() > >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>+ ch:put(true) > >>+end; > >>+ > >>+function f2() > >>+ box.space.test:create_index('third', {parts = {3, 'string'}}) > >>+ ch:put(true) > >>+end; > >>+ > >>+test_run:cmd("setopt delimiter ''"); > >>+ > >>+_ = {fiber.create(f1), fiber.create(f2)} > >>+ > >>+ch:get() > >>+ch:get() > >>+ > >>+_ = box.space.test:drop() > >>diff --git a/test/box/ddl_tuple.result b/test/box/ddl_tuple.result > >>new file mode 100644 > >>index 000000000..6a024a833 > >>--- /dev/null > >>+++ b/test/box/ddl_tuple.result > >>@@ -0,0 +1,67 @@ > >>+-- test-run result file version 2 > >>+env = require('test_run') > >>+ | --- > >>+ | ... > >>+test_run = env.new() > >>+ | --- > >>+ | ... > >>+ > >>+fiber = require'fiber' > >>+ | --- > >>+ | ... > >>+ch = fiber.channel(3) > >>+ | --- > >>+ | ... > >>+ > >>+_ = box.schema.space.create('test'):create_index('pk') > >>+ | --- > >>+ | ... > >>+ > >>+test_run:cmd("setopt delimiter ';'") > >>+ | --- > >>+ | - true > >>+ | ... > >>+function add_index() > >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>+ ch:put(true) > >>+end; > >>+ | --- > >>+ | ... > >>+ > >>+function insert_tuple(tuple) > >>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) > >>+end; > >>+ | --- > >>+ | ... > >>+test_run:cmd("setopt delimiter ''"); > >>+ | --- > >>+ | - true > >>+ | ... > >>+ > >>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} > >>+ | --- > >>+ | ... > >>+{ch:get(), ch:get(), ch:get()} > >>+ | --- > >>+ | - - - false > >>+ | - 'Tuple field 2 type does not match one required by operation: expected unsigned' > >>+ | - - true > >>+ | - [1, 2, 'a'] > >>+ | - true > >>+ | ... > >>+ > >>+box.space.test:select() > >>+ | --- > >>+ | - - [1, 2, 'a'] > >>+ | ... > >>+ > >>+test_run:cmd('restart server default') > >>+ | > >>+ > >>+box.space.test:select() > >>+ | --- > >>+ | - - [1, 2, 'a'] > >>+ | ... > >>+box.space.test:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/ddl_tuple.test.lua b/test/box/ddl_tuple.test.lua > >>new file mode 100644 > >>index 000000000..1c78a00e4 > >>--- /dev/null > >>+++ b/test/box/ddl_tuple.test.lua > >>@@ -0,0 +1,28 @@ > >>+env = require('test_run') > >>+test_run = env.new() > >>+ > >>+fiber = require'fiber' > >>+ch = fiber.channel(3) > >>+ > >>+_ = box.schema.space.create('test'):create_index('pk') > >>+ > >>+test_run:cmd("setopt delimiter ';'") > >>+function add_index() > >>+ box.space.test:create_index('sec', {parts = {2, 'num'}}) > >>+ ch:put(true) > >>+end; > >>+ > >>+function insert_tuple(tuple) > >>+ ch:put({pcall(box.space.test.replace, box.space.test, tuple)}) > >>+end; > >>+test_run:cmd("setopt delimiter ''"); > >>+ > >>+_ = {fiber.create(insert_tuple, {1, 2, 'a'}), fiber.create(add_index), fiber.create(insert_tuple, {2, '3', 'b'})} > >>+{ch:get(), ch:get(), ch:get()} > >>+ > >>+box.space.test:select() > >>+ > >>+test_run:cmd('restart server default') > >>+ > >>+box.space.test:select() > >>+box.space.test:drop() > >>diff --git a/test/box/gh-2336-ddl_call_twice.result b/test/box/gh-2336-ddl_call_twice.result > >>new file mode 100644 > >>index 000000000..0f55c9c09 > >>--- /dev/null > >>+++ b/test/box/gh-2336-ddl_call_twice.result > >>@@ -0,0 +1,44 @@ > >>+-- test-run result file version 2 > >>+-- gh-2336 crash if format called twice during snapshot > >>+fiber = require'fiber' > >>+ | --- > >>+ | ... > >>+ > >>+space = box.schema.space.create('test_format') > >>+ | --- > >>+ | ... > >>+_ = space:create_index('pk', { parts = { 1,'str' }}) > >>+ | --- > >>+ | ... > >>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) > >>+ | --- > >>+ | ... > >>+str = string.rep("t",1024) > >>+ | --- > >>+ | ... > >>+for i = 1, 10000 do space:insert{tostring(i), str} end > >>+ | --- > >>+ | ... > >>+ch = fiber.channel(3) > >>+ | --- > >>+ | ... > >>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) > >>+ | --- > >>+ | ... > >>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} > >>+ | --- > >>+ | ... > >>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end > >>+ | --- > >>+ | ... > >>+ > >>+{ch:get(), ch:get(), ch:get()} > >>+ | --- > >>+ | - - true > >>+ | - true > >>+ | - true > >>+ | ... > >>+ > >>+space:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/gh-2336-ddl_call_twice.test.lua b/test/box/gh-2336-ddl_call_twice.test.lua > >>new file mode 100644 > >>index 000000000..f92afc211 > >>--- /dev/null > >>+++ b/test/box/gh-2336-ddl_call_twice.test.lua > >>@@ -0,0 +1,16 @@ > >>+-- gh-2336 crash if format called twice during snapshot > >>+fiber = require'fiber' > >>+ > >>+space = box.schema.space.create('test_format') > >>+_ = space:create_index('pk', { parts = { 1,'str' }}) > >>+space:format({{ name ="key"; type = "string" }, { name ="dataAB"; type = "string" }}) > >>+str = string.rep("t",1024) > >>+for i = 1, 10000 do space:insert{tostring(i), str} end > >>+ch = fiber.channel(3) > >>+_ = fiber.create(function() fiber.yield() box.snapshot() ch:put(true) end) > >>+format = {{name ="key"; type = "string"}, {name ="data"; type = "string"}} > >>+for i = 1, 2 do fiber.create(function() fiber.yield() space:format(format) ch:put(true) end) end > >>+ > >>+{ch:get(), ch:get(), ch:get()} > >>+ > >>+space:drop() > >>diff --git a/test/box/gh-2783-ddl_lock.result b/test/box/gh-2783-ddl_lock.result > >>new file mode 100644 > >>index 000000000..7b3ba3444 > >>--- /dev/null > >>+++ b/test/box/gh-2783-ddl_lock.result > >>@@ -0,0 +1,62 @@ > >>+-- test-run result file version 2 > >>+env = require('test_run') > >>+ | --- > >>+ | ... > >>+test_run = env.new() > >>+ | --- > >>+ | ... > >>+ > >>+-- > >>+-- gh-2783 > >>+-- A ddl operation shoud fail before trying to lock a ddl latch > >>+-- in a multi-statement transaction. > >>+-- If operation tries to lock already an locked latch then the > >>+-- current transaction will be silently rolled back under our feet. > >>+-- This is confusing. So check for multi-statement transaction > >>+-- before locking the latch. > >>+-- > >>+test_latch = box.schema.space.create('test_latch') > >>+ | --- > >>+ | ... > >>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) > >>+ | --- > >>+ | ... > >>+fiber = require('fiber') > >>+ | --- > >>+ | ... > >>+c = fiber.channel(1) > >>+ | --- > >>+ | ... > >>+test_run:cmd("setopt delimiter ';'") > >>+ | --- > >>+ | - true > >>+ | ... > >>+_ = fiber.create(function() > >>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) > >>+ c:put(true) > >>+end); > >>+ | --- > >>+ | ... > >>+ > >>+-- Should be Ok for now > >>+box.begin() > >>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) > >>+box.commit(); > >>+ | --- > >>+ | ... > >>+test_run:cmd("setopt delimiter ''"); > >>+ | --- > >>+ | - true > >>+ | ... > >>+-- Explicitly roll back the transaction in multi-statement, > >>+-- which hasn't finished due to DDL error > >>+box.rollback() > >>+ | --- > >>+ | ... > >>+ > >>+_ = c:get() > >>+ | --- > >>+ | ... > >>+test_latch:drop() -- this is where everything stops > >>+ | --- > >>+ | ... > >>diff --git a/test/box/gh-2783-ddl_lock.test.lua b/test/box/gh-2783-ddl_lock.test.lua > >>new file mode 100644 > >>index 000000000..953e177a7 > >>--- /dev/null > >>+++ b/test/box/gh-2783-ddl_lock.test.lua > >>@@ -0,0 +1,33 @@ > >>+env = require('test_run') > >>+test_run = env.new() > >>+ > >>+-- > >>+-- gh-2783 > >>+-- A ddl operation shoud fail before trying to lock a ddl latch > >>+-- in a multi-statement transaction. > >>+-- If operation tries to lock already an locked latch then the > >>+-- current transaction will be silently rolled back under our feet. > >>+-- This is confusing. So check for multi-statement transaction > >>+-- before locking the latch. > >>+-- > >>+test_latch = box.schema.space.create('test_latch') > >>+_ = test_latch:create_index('primary', {unique = true, parts = {1, 'unsigned'}}) > >>+fiber = require('fiber') > >>+c = fiber.channel(1) > >>+test_run:cmd("setopt delimiter ';'") > >>+_ = fiber.create(function() > >>+ test_latch:create_index("sec", {unique = true, parts = {2, 'unsigned'}}) > >>+ c:put(true) > >>+end); > >>+ > >>+-- Should be Ok for now > >>+box.begin() > >>+ test_latch:create_index("sec2", {unique = true, parts = {2, 'unsigned'}}) > >>+box.commit(); > >>+test_run:cmd("setopt delimiter ''"); > >>+-- Explicitly roll back the transaction in multi-statement, > >>+-- which hasn't finished due to DDL error > >>+box.rollback() > >>+ > >>+_ = c:get() > >>+test_latch:drop() -- this is where everything stops > >>diff --git a/test/box/gh-2839-ddl_custom_fields.result b/test/box/gh-2839-ddl_custom_fields.result > >>new file mode 100644 > >>index 000000000..3846fe08e > >>--- /dev/null > >>+++ b/test/box/gh-2839-ddl_custom_fields.result > >>@@ -0,0 +1,26 @@ > >>+-- test-run result file version 2 > >>+-- > >>+-- gh-2839: allow to store custom fields in field definition. > >>+-- > >>+format = {} > >>+ | --- > >>+ | ... > >>+format[1] = {name = 'field1', type = 'unsigned'} > >>+ | --- > >>+ | ... > >>+format[2] = {'field2', 'unsigned'} > >>+ | --- > >>+ | ... > >>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} > >>+ | --- > >>+ | ... > >>+s = box.schema.create_space('test', {format = format}) > >>+ | --- > >>+ | ... > >>+s:format()[3].custom_field > >>+ | --- > >>+ | - custom_value > >>+ | ... > >>+s:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/gh-2839-ddl_custom_fields.test.lua b/test/box/gh-2839-ddl_custom_fields.test.lua > >>new file mode 100644 > >>index 000000000..e1c0e2a0b > >>--- /dev/null > >>+++ b/test/box/gh-2839-ddl_custom_fields.test.lua > >>@@ -0,0 +1,10 @@ > >>+-- > >>+-- gh-2839: allow to store custom fields in field definition. > >>+-- > >>+format = {} > >>+format[1] = {name = 'field1', type = 'unsigned'} > >>+format[2] = {'field2', 'unsigned'} > >>+format[3] = {'field3', 'unsigned', custom_field = 'custom_value'} > >>+s = box.schema.create_space('test', {format = format}) > >>+s:format()[3].custom_field > >>+s:drop() > >>diff --git a/test/box/gh-2937-ddl_collation_field_def.result b/test/box/gh-2937-ddl_collation_field_def.result > >>new file mode 100644 > >>index 000000000..8b3de607e > >>--- /dev/null > >>+++ b/test/box/gh-2937-ddl_collation_field_def.result > >>@@ -0,0 +1,27 @@ > >>+-- test-run result file version 2 > >>+-- > >>+-- gh-2937: allow to specify collation in field definition. > >>+-- > >>+format = {} > >>+ | --- > >>+ | ... > >>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} > >>+ | --- > >>+ | ... > >>+format[2] = {'field2', 'any', collation = 'unicode_ci'} > >>+ | --- > >>+ | ... > >>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} > >>+ | --- > >>+ | ... > >>+s = box.schema.create_space('test', {format = format}) > >>+ | --- > >>+ | ... > >>+s:format() > >>+ | --- > >>+ | - [{'type': 'string', 'name': 'field1', 'collation': 1}, {'type': 'any', 'name': 'field2', > >>+ | 'collation': 2}, {'type': 'scalar', 'name': 'field3', 'collation': 1}] > >>+ | ... > >>+s:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/gh-2937-ddl_collation_field_def.test.lua b/test/box/gh-2937-ddl_collation_field_def.test.lua > >>new file mode 100644 > >>index 000000000..1ddfa7246 > >>--- /dev/null > >>+++ b/test/box/gh-2937-ddl_collation_field_def.test.lua > >>@@ -0,0 +1,10 @@ > >>+-- > >>+-- gh-2937: allow to specify collation in field definition. > >>+-- > >>+format = {} > >>+format[1] = {name = 'field1', type = 'string', collation = 'unicode'} > >>+format[2] = {'field2', 'any', collation = 'unicode_ci'} > >>+format[3] = {type = 'scalar', name = 'field3', collation = 'unicode'} > >>+s = box.schema.create_space('test', {format = format}) > >>+s:format() > >>+s:drop() > >>diff --git a/test/box/gh-3290-ddl_collation_deleted.result b/test/box/gh-3290-ddl_collation_deleted.result > >>new file mode 100644 > >>index 000000000..eb59b6c1d > >>--- /dev/null > >>+++ b/test/box/gh-3290-ddl_collation_deleted.result > >>@@ -0,0 +1,16 @@ > >>+-- test-run result file version 2 > >>+-- > >>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that > >>+-- must work even if a collation is deleted from _collation. > >>+-- > >>+t = box.space._collation:delete{1} > >>+ | --- > >>+ | ... > >>+utf8.cmp('abc', 'def') > >>+ | --- > >>+ | - -1 > >>+ | ... > >>+box.space._collation:replace(t) > >>+ | --- > >>+ | - [1, 'unicode', 1, 'ICU', '', {'strength': 'tertiary'}] > >>+ | ... > >>diff --git a/test/box/gh-3290-ddl_collation_deleted.test.lua b/test/box/gh-3290-ddl_collation_deleted.test.lua > >>new file mode 100644 > >>index 000000000..5fd3d7e1a > >>--- /dev/null > >>+++ b/test/box/gh-3290-ddl_collation_deleted.test.lua > >>@@ -0,0 +1,7 @@ > >>+-- > >>+-- gh-3290: expose ICU into Lua. It uses built-in collations, that > >>+-- must work even if a collation is deleted from _collation. > >>+-- > >>+t = box.space._collation:delete{1} > >>+utf8.cmp('abc', 'def') > >>+box.space._collation:replace(t) > >>diff --git a/test/box/gh-928-ddl_truncate.result b/test/box/gh-928-ddl_truncate.result > >>new file mode 100644 > >>index 000000000..f244e07f1 > >>--- /dev/null > >>+++ b/test/box/gh-928-ddl_truncate.result > >>@@ -0,0 +1,35 @@ > >>+-- test-run result file version 2 > >>+fiber = require'fiber' > >>+ | --- > >>+ | ... > >>+ch = fiber.channel(2) > >>+ | --- > >>+ | ... > >>+ > >>+--issue #928 > >>+space = box.schema.space.create('test_trunc') > >>+ | --- > >>+ | ... > >>+_ = space:create_index('pk') > >>+ | --- > >>+ | ... > >>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) > >>+ | --- > >>+ | ... > >>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) > >>+ | --- > >>+ | ... > >>+ > >>+function test_trunc() space:truncate() ch:put(true) end > >>+ | --- > >>+ | ... > >>+ > >>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} > >>+ | --- > >>+ | ... > >>+_ = {ch:get(), ch:get()} > >>+ | --- > >>+ | ... > >>+space:drop() > >>+ | --- > >>+ | ... > >>diff --git a/test/box/gh-928-ddl_truncate.test.lua b/test/box/gh-928-ddl_truncate.test.lua > >>new file mode 100644 > >>index 000000000..10be8c361 > >>--- /dev/null > >>+++ b/test/box/gh-928-ddl_truncate.test.lua > >>@@ -0,0 +1,14 @@ > >>+fiber = require'fiber' > >>+ch = fiber.channel(2) > >>+ > >>+--issue #928 > >>+space = box.schema.space.create('test_trunc') > >>+_ = space:create_index('pk') > >>+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) > >>+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) > >>+ > >>+function test_trunc() space:truncate() ch:put(true) end > >>+ > >>+_ = {fiber.create(test_trunc), fiber.create(test_trunc)} > >>+_ = {ch:get(), ch:get()} > >>+space:drop() > >>-- > >>2.17.1 > >> > > > > > >-- > >Oleg Piskunov > > > > > -- > Alexander Tikhonov > -- sergeyb@ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test 2020-03-18 10:37 [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test Alexander V. Tikhonov 2020-03-18 12:06 ` Oleg Piskunov @ 2020-04-15 15:26 ` Kirill Yukhin 1 sibling, 0 replies; 6+ messages in thread From: Kirill Yukhin @ 2020-04-15 15:26 UTC (permalink / raw) To: Alexander V. Tikhonov; +Cc: Oleg Piskunov, tarantool-patches Hello, On 18 мар 13:37, Alexander V. Tikhonov wrote: > 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 I've checked the patch into master. -- Regards, Kirill Yukhin ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-04-15 15:26 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-18 10:37 [Tarantool-patches] [PATCH v2 1/2] Divide box/ddl.test.lua test Alexander V. Tikhonov 2020-03-18 12:06 ` Oleg Piskunov 2020-03-19 13:50 ` Alexander Tikhonov 2020-03-20 8:40 ` Oleg Piskunov 2020-03-24 8:02 ` Sergey Bronnikov 2020-04-15 15:26 ` Kirill Yukhin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox