215 похожих чатов

Добрый день, есть вопрос про unique constraints в тарантуле и

nullable полями
С одной стороны есть тикет https://github.com/tarantool/tarantool/issues/1557
В нем есть формулировки, которые тяжело однозначно интерпретировать с первого раза, и ссылки на подробные разборы unique constraints, понять которые еще тяжелее (ну или просто очень лениво)
Вопрос в итоге такой: точно ли tarantool должен позволять вставлять несколько null-значений в объявленный уникальным столбец, или это бага и достойно тикета?

tarantool --version
Tarantool 1.10.2-98-gcb1bc17

и минимальный init.lua

box.cfg{}

local test = box.schema.space.create('test')
test:format({
{ name = 'id', type = 'number' };
{ name = 'nullable', type = 'number', is_nullable = true };
})

test:create_index('primary', {
type = 'tree';
parts = { 'id' };
})

test:create_index('nullable_test', {
type = 'tree';
parts = { 'nullable' };
})

test:insert(box.tuple.new{1, box.NULL})
test:insert(box.tuple.new{2, box.NULL}) -- should not be legal

test:insert(box.tuple.new{3, 100})
test:insert(box.tuple.new{4, 100}) -- raises as it should raise

абсолютно аналогично более "человечное" понимание unique constraints ломается при использовании nullable поля в композитных индексах, например
box.cfg{}

local test = box.schema.space.create('test')
test:format({
{ name = 'id', type = 'number' };
{ name = 'nullable', type = 'number', is_nullable = true };
{ name = 'nullless', type = 'number', };
})

test:create_index('primary', {
type = 'tree';
parts = { 'id' };
})

test:create_index('nullable_test', {
type = 'tree';
parts = { 'nullable', 'nullless' };
})

test:insert(box.tuple.new{1, box.NULL, 100})
test:insert(box.tuple.new{2, box.NULL, 100}) -- should not be legal

test:insert(box.tuple.new{3, 100, 100})
test:insert(box.tuple.new{4, 100, 100}) -- raises as it should raise

1 ответов

12 просмотров

Налов можно вставлять много, даже в уникальный индекс

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта