sqltarantool

How to change format of sql table in Tarantool


I want to add nullable column to sql table, but changing table format leads to an error:

box.execute([[
    CREATE TABLE test(
        "id" INTEGER PRIMARY KEY AUTOINCREMENT,
        "name" TEXT NOT NULL
    )
]])

f = box.space.TEST:format()

table.insert(f, {type='string', name='description', is_nullable=true})

box.space.TEST:format(f)

error: 'Can''t modify space ''TEST'': exact_field_count must be either 0 or >= formatted
    field count'

So is there any way to change format of sql table?


Solution

  • At the moment (Tarantool 2.4 beta) there is an open issue about that. The source of the problem is that tables created via SQL DDL contain non-null field_count property in metadata, which forbids saving larger tuples into the space.

    However, if you specified field_count when creating the space or used SQL DDL for creating it, and decided to add a tuple/column, here is a workaround for setting the field_count value to 0:

    tarantool> box.space._space:update(box.space.YOUR_SPACE.id, {{'=',5,0}})
    

    After that, you will be able to change the space format and insert larger tuples. Replace YOUR_SPACE with the actual name of your space. In case of a space created via SQL DDL this name will be the SQL table name in capital letters.