diff --git a/src/box/box_lua.m b/src/box/box_lua.m index 80294593a26bcc820382718c04f87287a402a755..2d7ec70466c62a46fa3cced25996d64deeb69be9 100644 --- a/src/box/box_lua.m +++ b/src/box/box_lua.m @@ -1010,6 +1010,13 @@ lua_table_to_tuple(struct lua_State *L, int index) field_len = n > UINT32_MAX ? sizeof(uint64_t) : sizeof(uint32_t); break; } + case LUA_TBOOLEAN: + { + bool value = lua_toboolean(L, -1); + const char *str = value ? "true" : "false"; + field_len = strlen(str) + 1; + break; + } case LUA_TCDATA: { /* Check if we can convert. */ @@ -1054,6 +1061,13 @@ lua_table_to_tuple(struct lua_State *L, int index) } break; } + case LUA_TBOOLEAN: + { + bool value = lua_toboolean(L, -1); + const char *str = value ? "true" : "false"; + pos = pack_lstr(pos, str, strlen(str) + 1); + break; + } case LUA_TCDATA: { uint64_t n = tarantool_lua_tointeger64(L, -1); diff --git a/test/box/lua.test b/test/box/lua.test index 4b4f435bd44ac176ddf01472e71d5aa6103abc78..c10fe13b2b866fd5b9ff6d1c20add5646f8572d3 100644 --- a/test/box/lua.test +++ b/test/box/lua.test @@ -616,3 +616,8 @@ exec admin "lua -1LL" exec admin "lua -1ULL" exec admin "lua tonumber64(-1.0)" exec admin "lua 6LL - 7LL" +print """# A test case for Bug#1131108 'incorrect conversion from boolean lua value to tarantool tuple' +""" +exec admin "lua function bug1075677() local range = {} table.insert(range, 1>0) return range end" +exec sql "call bug1075677()" +exec admin "lua bug1075677=nil"