Size: a a a

2020 July 16

МБ

Максим Броня... in Tarantool
Mons Anderson
Поле индексированное или нет?
да, сделал ему принудительно update set =null и заработало...  как это у вас называется ) подземный стук ))
источник

MA

Mons Anderson in Tarantool
Хм. А можете поделитсья снапами/xlog'ами? Особенно интересует "до update set null"
источник

MA

Mons Anderson in Tarantool
@kyukhin не чинили недавно чего-то подобного?
источник

KY

Kirill Yukhin in Tarantool
Максим Броня
Всем привет, в 2.2.2 не пойму это баг или фича, когда в спейс добавили новое поле и делаем, например, [[ select * from "space_name" where "new_field" is null ]] выводит почему-то только первую запись )) хотя их там много... если как параметр box.NULL пытаться передать, то вообще ошибка )
источник

МБ

Максим Броня... in Tarantool
Mons Anderson
Хм. А можете поделитсья снапами/xlog'ами? Особенно интересует "до update set null"
попробую на пустой базе повторить и сделаю ... оно еще на update вот такое писало... 'Field 3 was not found in the tuple' пока я все поля перед ним не заполнил )
источник

MA

Mons Anderson in Tarantool
Максим Броня
попробую на пустой базе повторить и сделаю ... оно еще на update вот такое писало... 'Field 3 was not found in the tuple' пока я все поля перед ним не заполнил )
Ну это да, особенность хранения данных в таплах :)
источник

МБ

Максим Броня... in Tarantool
источник

МБ

Максим Броня... in Tarantool
))
источник

MI

Mergen Imeev in Tarantool
Максим Броня
Всем привет, в 2.2.2 не пойму это баг или фича, когда в спейс добавили новое поле и делаем, например, [[ select * from "space_name" where "new_field" is null ]] выводит почему-то только первую запись )) хотя их там много... если как параметр box.NULL пытаться передать, то вообще ошибка )
Попробовал вопроизвести:
tarantool> box.execute('create table t(i int primary key, a int);')
---
- row_count: 1
...

tarantool> box.execute('insert into t values (1, NULL), (2, 2), (3,NULL);')
---
- row_count: 3
...

tarantool> box.execute('select * from t where a is NULL;')
---
- metadata:
 - name: I
   type: integer
 - name: A
   type: integer
 rows:
 - [1, null]
 - [3, null]
...
источник

MI

Mergen Imeev in Tarantool
Вроде норм, или я что-то не так понял?
источник

МБ

Максим Броня... in Tarantool
Mergen Imeev
Вроде норм, или я что-то не так понял?
не так, надо добавить пару новых полей...  через format или alter table
источник

МБ

Максим Броня... in Tarantool
is_nullable=true
источник

МБ

Максим Броня... in Tarantool
и потом сделать update 'space' set 'field' = null и будет ошибка 'Field 3 was not found in the tuple' , а если сделать select .. where field is null то выведет только первую запись
источник

МБ

Максим Броня... in Tarantool
ну или я такой везучий )
источник

MI

Mergen Imeev in Tarantool
Попробовал воспроизвести:
format = {{'i', 'integer'}}
s = box.schema.space.create('A', {format = format})
_ = s:create_index('i')
box.execute('insert into a values (1), (2);')
format = {{'i', 'integer'}, {'a', 'integer', is_nullable = true}}
s:format(format)
box.execute('select * from a where "a" is NULL;')
box.execute('update a set "a" = NULL;')
box.execute('select * from a where "a" is NULL;')


Результат:
tarantool> box.execute('select * from a where "a" is NULL;')
---
- metadata:
 - name: i
   type: integer
 - name: a
   type: integer
 rows:
 - [1, null]
 - [2, null]
...
источник

MI

Mergen Imeev in Tarantool
Оба селекта дают такие результаты, ошибку при апдейте не получил
источник

МБ

Максим Броня... in Tarantool
Mergen Imeev
Оба селекта дают такие результаты, ошибку при апдейте не получил
видимо надо 2 поля сразу добавить и сделать селект и апдейт по второму
источник

MI

Mergen Imeev in Tarantool
Попробовал вариант с 2 полями:
format = {{'i', 'integer'}}
s = box.schema.space.create('A', {format = format})
_ = s:create_index('i')
box.execute('insert into a values (1), (2);')
format = {{'i', 'integer'}, {'a', 'integer', is_nullable = true}, {'b', 'integer', is_nullable = true}}
s:format(format)
box.execute('update a set "b" = NULL;')


При апдейте выдало ошибку:
tarantool> box.execute('update a set "b" = NULL;')
---
- null
- Field 3 was not found in the tuple
...


Причем:
tarantool> box.execute('update a set "b" = 1 WHERE "b" = NULL;')
---
- row_count: 0
...

tarantool> box.execute('select * from a where "b" is NULL;')
---
- metadata:
 - name: i
   type: integer
 - name: a
   type: integer
 - name: b
   type: integer
 rows:
 - [1, null, null]
 - [2, null, null]
...


Однако, если сначала обновить поле a, все работает
tarantool> box.execute('update a set "a" = 1;')
---
- row_count: 2
...

tarantool> box.execute('update a set "b" = 1;')
---
- row_count: 2
...
источник

MI

Mergen Imeev in Tarantool
@Bronya100 Заведете тикет?
источник

МБ

Максим Броня... in Tarantool
Mergen Imeev
@Bronya100 Заведете тикет?
спасибо, да, попробую воспроизвести, как то ведь у меня это получилось..
источник