Description
Tarantool version:
Tarantool 2.6.0-116-g75ba744b3
Target: Darwin-x86_64-RelWithDebInfo
Build options: cmake . -DCMAKE_INSTALL_PREFIX=/Users/tntmac04.tarantool.i/builds/PVWCJs8U/0/tarantool/tarantool/static-build/tarantool-prefix -DENABLE_BACKTRACE=TRUE
Compiler: /Library/Developer/CommandLineTools/usr/bin/cc /Library/Developer/CommandLineTools/usr/bin/c++
C_FLAGS: -Wno-unknown-pragmas -fexceptions -funwind-tables -fno-omit-frame-pointer -fno-stack-protector -fno-common -msse2 -std=c11 -Wall -Wextra -Wno-strict-aliasing -Wno-char-subscripts -Wno-gnu-alignof-expression -Werror
CXX_FLAGS: -Wno-unknown-pragmas -fexceptions -funwind-tables -fno-omit-frame-pointer -fno-stack-protector -fno-common -msse2 -std=c++11 -Wall -Wextra -Wno-strict-aliasing -Wno-char-subscripts -Wno-invalid-offsetof -Wno-gnu-alignof-expression -Werror
OS version:
OSX 15
Bug description:
https://gitlab.com/tarantool/tarantool/-/jobs/760930120#L5268
results file checksum: 5f0424778fda5bd30f48d707eebe1983
[032] --- box/gh-5135-invalid-upsert.result Mon Sep 28 16:59:47 2020
[032] +++ box/gh-5135-invalid-upsert.reject Mon Sep 28 17:58:16 2020
[032] @@ -53,7 +53,7 @@
[032] | ...
[032] t:upsert(ops)
[032] | ---
[032] - | - [1, [1], 2]
[032] + | - error: Field 0 was not found in the tuple
[032] | ...
[032]
[032] -- Can't delete more than 1 field from map in one
[032] @@ -84,7 +84,7 @@
[032] | ...
[032] t:upsert(ops)
[032] | ---
[032] - | - [1, {'a': 100}, 2]
[032] + | - [1]
[032] | ...
[032] t = box.tuple.new({{1}})
[032] | ---
[032] @@ -94,7 +94,7 @@
[032] | ...
[032] t:upsert(ops)
[032] | ---
[032] - | - [1, [1], 2]
[032] + | - error: Field 0 was not found in the tuple
[032] | ...
[032]
[032] -- Several fields, multiple operations, path
[032] @@ -104,7 +104,7 @@
[032] | ...
[032] t:upsert({{'+', '[2][1]', 1}, {'&', '[1][crash]', 2}, {'=', '[3]', {4}}})
[032] | ---
[032] - | - [[1], [3], [4]]
[032] + | - [[1], [2], [0]]
[032] | ...
[032]
[032] t = box.tuple.new({ { { { 1 } }, { {a = 2} } }, { 3 } })
[032] @@ -131,7 +131,7 @@
[032] -- This should be correct.
[032] t:upsert({{'+', '[1][1][1][1]', 10}})
[032] | ---
[032] - | - [[[[11]], [{'a': 2}]], [3]]
[032] + | - [[[[1]], [{'a': 2}]], [3]]
[032] | ...
[032]
[032] -- Check that invalid insertion can't screw indexes. I.e. next
[032] @@ -142,5 +142,5 @@
[032] -- The second operation should change 2 to 12, not 20 to 30.
[032] t:upsert({{'!', '[1][2][100]', 20}, {'+', '[1][2]', 10}})
[032] | ---
[032] - | - [[1, 12, 3]]
[032] + | - [[1, 2, 3]]
[032] | ...
[032]
Steps to reproduce:
Optional (but very desirable):
- coredump
- backtrace
- netstat