From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 1AA6A21BB4 for ; Mon, 8 Jul 2019 08:13:42 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BFmcwVbA9d5F for ; Mon, 8 Jul 2019 08:13:42 -0400 (EDT) Received: from smtp14.mail.ru (smtp14.mail.ru [94.100.181.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id CD01321BAC for ; Mon, 8 Jul 2019 08:13:41 -0400 (EDT) From: Roman Khabibov Subject: [tarantool-patches] [PATCH] net.box: ignore absence of _vcollation Date: Mon, 8 Jul 2019 15:13:38 +0300 Message-Id: <20190708121338.76309-1-roman.habibov@tarantool.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: tarantool-patches@freelists.org Cc: alexander.turenko@tarantool.org Ignore error about absence of _vcollation, when a client connects to a server of old Tarantool versions, where this space does not exist. Closes #4307 --- Branch: https://github.com/tarantool/tarantool/tree/romanhabibov/gh-4307-vcoll Issue: https://github.com/tarantool/tarantool/issues/4307 src/box/lua/net_box.lua | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua index 2892bb3d3..723e63045 100644 --- a/src/box/lua/net_box.lua +++ b/src/box/lua/net_box.lua @@ -761,6 +761,11 @@ local function create_transport(host, port, user, password, callback, if status ~= 0 then local body body, body_end = decode(body_rpos) + local err_msg = 'Space \'277\' does not exist' + if id == select3_id and string.find(body[IPROTO_ERROR_KEY], + err_msg) ~= nil then + break + end return error_sm(E_NO_CONNECTION, body[IPROTO_ERROR_KEY]) end if schema_version == nil then @@ -776,7 +781,7 @@ local function create_transport(host, port, user, password, callback, until response[select1_id] and response[select2_id] and response[select3_id] callback('did_fetch_schema', schema_version, response[select1_id], - response[select2_id],response[select3_id]) + response[select2_id], response[select3_id]) set_state('active') return iproto_sm(schema_version) end @@ -1270,16 +1275,28 @@ function remote_methods:_install_schema(schema_version, spaces, indices, local pktype = index[PARTS][k][2] or index[PARTS][k].type local pkfield = index[PARTS][k][1] or index[PARTS][k].field local pkcollation = nil - if pkcollationid ~= nil then + if pkcollationid ~= nil and collations ~= nil then pkcollation = collations[pkcollationid + 1][2] end - local pk = { - type = pktype, - fieldno = pkfield + 1, - collation = pkcollation, - is_nullable = pknullable - } + local pk + if collations ~= nil then + pk = { + type = pktype, + fieldno = pkfield + 1, + collation = pkcollation, + is_nullable = pknullable + } + else + pk = { + type = pktype, + fieldno = pkfield + 1, + collation_id = pkcollationid, + is_nullable = pknullable + } + end + + idx.parts[k] = pk end idx.unique = not not index[OPTS].unique -- 2.20.1 (Apple Git-117)