спейс
box.schema.space.create("t")
box.space.t:format({{ name = 'channel_type', type = 'integer' },{ name = 'channel_id', type = 'string' },{ name = 'hash', type = 'string' },{ name = 'subjects', type = 'array' },{ name = 'updated_at', type = 'integer' }})
— добавляю индекс
box.space.t:create_index('primary', {type = 'hash', unique = true, parts = { 'hash' }})
—вставляю запись
box.space.t:insert({1,'mail@mail.ru','123',{},22})
Необходимо добавить одно поле source:
box.space.t:format({{ name = 'channel_type', type = 'integer' },{ name = 'channel_id', type = 'string' },{ name = 'hash', type = 'string' },{ name = 'subjects', type = 'array', is_nullable=true },{ name = 'updated_at', type = 'integer' }, { name = 'source', type = 'integer' }})
Получаю ошибку: error: Tuple field 6 required by space format is missing
Если добавить is_nullable=true - поле добавится
Формат запускает валидацию данных. В данных нового поля нет - запрос падает с ошибкой. С is_nullable отрабатывает, потому что валидация не будет ругаться на отсутствующее поле. Если не хочется is_nullable, то стоит предварительно пройтись по существующим таплам и дозаполнить их каким-то "дефолтным" значением
Обсуждают сегодня