From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng3.m.smailru.net (smtpng3.m.smailru.net [94.100.177.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 9CCC4469719 for ; Mon, 16 Mar 2020 19:19:41 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Mon, 16 Mar 2020 19:19:38 +0300 Message-Id: <8dd39b1d8d42f09384b1bf7c0126251c0f370fd5.1584375501.git.avtikhon@tarantool.org> Subject: [Tarantool-patches] [PATCH v1] Divide box/ddl.test.lua test List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Oleg Piskunov Cc: tarantool-patches@dev.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 | 37 + test/box/ddl_alter.test.lua | 12 + test/box/ddl_collation.result | 853 ++++++++++++ test/box/ddl_collation.test.lua | 90 ++ test/box/ddl_collation_types.result | 28 + test/box/ddl_collation_types.test.lua | 9 + test/box/ddl_collation_wrong_id.result | 28 + test/box/ddl_collation_wrong_id.test.lua | 10 + test/box/ddl_no_collation.result | 19 + test/box/ddl_no_collation.test.lua | 7 + 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 | 51 + test/box/gh-2336-ddl_call_twice.test.lua | 19 + 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 | 33 + test/box/gh-2839-ddl_custom_fields.test.lua | 13 + .../gh-2937-ddl_collation_field_def.result | 34 + .../gh-2937-ddl_collation_field_def.test.lua | 13 + test/box/gh-3290-ddl_collation_deleted.result | 23 + .../gh-3290-ddl_collation_deleted.test.lua | 10 + test/box/gh-928-ddl_truncate.result | 42 + test/box/gh-928-ddl_truncate.test.lua | 17 + 28 files changed, 1629 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..ec370e5a3 --- /dev/null +++ b/test/box/ddl_alter.result @@ -0,0 +1,37 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- 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..84c25abdb --- /dev/null +++ b/test/box/ddl_alter.test.lua @@ -0,0 +1,12 @@ +env = require('test_run') +test_run = env.new() + +-- 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..92797a4d9 --- /dev/null +++ b/test/box/ddl_collation_types.result @@ -0,0 +1,28 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- 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..478530537 --- /dev/null +++ b/test/box/ddl_collation_types.test.lua @@ -0,0 +1,9 @@ +env = require('test_run') +test_run = env.new() + +-- 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..f8a10814b --- /dev/null +++ b/test/box/ddl_collation_wrong_id.result @@ -0,0 +1,28 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- 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..0aaab322d --- /dev/null +++ b/test/box/ddl_collation_wrong_id.test.lua @@ -0,0 +1,10 @@ +env = require('test_run') +test_run = env.new() + +-- 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..6b05f8bc3 --- /dev/null +++ b/test/box/ddl_no_collation.result @@ -0,0 +1,19 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- 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..a5fdedd02 --- /dev/null +++ b/test/box/ddl_no_collation.test.lua @@ -0,0 +1,7 @@ +env = require('test_run') +test_run = env.new() + +-- 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..aa4dee54b --- /dev/null +++ b/test/box/gh-2336-ddl_call_twice.result @@ -0,0 +1,51 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- 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..cf187c1bd --- /dev/null +++ b/test/box/gh-2336-ddl_call_twice.test.lua @@ -0,0 +1,19 @@ +env = require('test_run') +test_run = env.new() + +-- 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..15307b3e0 --- /dev/null +++ b/test/box/gh-2839-ddl_custom_fields.result @@ -0,0 +1,33 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- +-- 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..5f0cb243f --- /dev/null +++ b/test/box/gh-2839-ddl_custom_fields.test.lua @@ -0,0 +1,13 @@ +env = require('test_run') +test_run = env.new() + +-- +-- 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..bd3109fff --- /dev/null +++ b/test/box/gh-2937-ddl_collation_field_def.result @@ -0,0 +1,34 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- +-- 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..0906afebd --- /dev/null +++ b/test/box/gh-2937-ddl_collation_field_def.test.lua @@ -0,0 +1,13 @@ +env = require('test_run') +test_run = env.new() + +-- +-- 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..09af973d1 --- /dev/null +++ b/test/box/gh-3290-ddl_collation_deleted.result @@ -0,0 +1,23 @@ +-- test-run result file version 2 +env = require('test_run') + | --- + | ... +test_run = env.new() + | --- + | ... + +-- +-- 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..f36838e7a --- /dev/null +++ b/test/box/gh-3290-ddl_collation_deleted.test.lua @@ -0,0 +1,10 @@ +env = require('test_run') +test_run = env.new() + +-- +-- 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..83a2616fb --- /dev/null +++ b/test/box/gh-928-ddl_truncate.result @@ -0,0 +1,42 @@ +-- test-run result file version 2 +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() + | --- + | ... 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..304cc2cfc --- /dev/null +++ b/test/box/gh-928-ddl_truncate.test.lua @@ -0,0 +1,17 @@ +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() -- 2.17.1