You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Image user have the following space format:
['string', 'string', 'string', 'string', 'string', 'string', 'string', 'string'], all fields except furst one is nullaple, PK on first field and imagine that the actual tuple in this space is the following: ['1', 'b', 'a', null, null, null, 'c']. From the point of view of the Tarantool, this is fully valid tuple.
An imagine that user needs to return this tuple in kind=types.list(types.string).
In current version user can't do this because:
1.4.0 doesn't support gapped arrays (ipairs is used which iterates until first nil)
diff --git a/graphql/execute.lua b/graphql/execute.lua
index 8622736..fe1d1bd 100644
--- a/graphql/execute.lua+++ b/graphql/execute.lua@@ -208,7 +208,7 @@ local function completeValue(fieldType, result, subSelections, context, opts)
local innerType = fieldType.ofType
local values = {}
- for i, value in ipairs(result) do+ for i, value in pairs(result) do
values[i] = completeValue(innerType, value, subSelections, context)
end
diff --git a/test/integration/graphql_test.lua b/test/integration/graphql_test.lua
index 6462450..d8e563a 100644
--- a/test/integration/graphql_test.lua+++ b/test/integration/graphql_test.lua@@ -2147,3 +2147,39 @@ function g.test_non_finite_float()
query_schema, nil, nil, {variables = variables})
end
end
++function g.test_is_array_invalid()+ local query = [[+ query ($x: [String]) { test(arg: $x) }+ ]]++ local function callback(_, args)+ setmetatable(args.arg, {__serialize='array'})+ return args.arg+ end++ local query_schema = {+ ['test'] = {+ kind = types.list(types.string),+ arguments = {+ arg = types.list(types.string),+ },+ resolve = callback,+ }+ }++ local test_values = {+ {[3] = 'a', [1] = 'b', [6] = 'c'},+ {[3] = 'a', [1] = 'b', [7] = 'c'}, -- got error: Variable "x" for a List must be an array, got map+ }++ for _, v in ipairs(test_values) do+ local variables = {x = v}+ local res = check_request(query, query_schema, nil, nil, {variables = variables})+ t.assert_type(res, 'table')++ print(json.encode(res.test))+ print(json.encode(v))+ t.assert_equals(json.encode(res.test), json.encode(v))+ end+end
Seems that this case must be fixed anyway.
The text was updated successfully, but these errors were encountered:
Image user have the following space format:
['string', 'string', 'string', 'string', 'string', 'string', 'string', 'string'], all fields except furst one is nullaple, PK on first field and imagine that the actual tuple in this space is the following: ['1', 'b', 'a', null, null, null, 'c']. From the point of view of the Tarantool, this is fully valid tuple.
An imagine that user needs to return this tuple in kind=types.list(types.string).
In current version user can't do this because:
Here is a little test:
Seems that this case must be fixed anyway.
The text was updated successfully, but these errors were encountered: