Alleviate box.unpack() limit of 8000 tuples

Bug #1018775 reported by Kostja Osipov
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tarantool
Fix Released
Medium
Dmitry Simonenko
tarantool (Debian)
Fix Released
Unknown

Bug Description

Currently select_range() can only return 8000 tuples, because it puts these tuples into a Lua table, and then calls unpack() on the table.

Instead, teach LuaPort to send Lua tables which consist entirely from box.tuple instances as is, without repacking them into a tuple.
I.e. when we do send of a Lua table, check the type of the first element: if it is a scalar, send the table as if it was a tuple of fields, if it is a tuple, send it as if it was a result set of tuples.

Kostja Osipov (kostja)
Changed in tarantool:
assignee: nobody → Aleksey Demakov (ademakov)
importance: Undecided → Medium
status: New → Confirmed
Kostja Osipov (kostja)
Changed in tarantool:
assignee: Aleksey Demakov (ademakov) → Kostja Osipov (kostja)
milestone: none → 1.4.9
Kostja Osipov (kostja)
Changed in tarantool:
assignee: Kostja Osipov (kostja) → Dmitry Simonenko (pmwkaa)
status: Confirmed → Fix Committed
Changed in tarantool (Debian):
status: Unknown → New
Changed in tarantool (Debian):
status: New → Confirmed
Kostja Osipov (kostja)
Changed in tarantool:
status: Fix Committed → Fix Released
Revision history for this message
UNera (unera) wrote :

  function bla ()
        local lst = {}
        local index = box.space[0].index[0]
        for d in index:iterator(box.index.GE) do
                 table.insert(lst, d)
        end
        return lst
    end,

Such code throws an exception: 12290: Return type 'userdata' is not supported in the binary protocol

Changed in tarantool (Debian):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.