Skip to content

Commit a9d6f41

Browse files
dokshinaolegrok
andauthored
Fix external keydef compatibility with builtin merger (#175)
Co-authored-by: Oleg Babin <babinoleg@mail.ru>
1 parent 15e8692 commit a9d6f41

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

.github/workflows/test_on_push.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ jobs:
1212
strategy:
1313
matrix:
1414
tarantool-version: ["1.10", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7"]
15+
remove-merger: [false]
16+
include:
17+
- tarantool-version: "2.7"
18+
remove-merger: true
1519
fail-fast: false
1620
runs-on: [ubuntu-latest]
1721
steps:
@@ -24,6 +28,10 @@ jobs:
2428
tarantool --version
2529
./deps.sh
2630
31+
- name: Remove external merger if needed
32+
if: ${{ matrix.remove-merger }}
33+
run: rm .rocks/lib/tarantool/tuple/merger.so
34+
2735
# This server starts and listen on 8084 port that is used for tests
2836
- name: Stop Mono server
2937
run: sudo kill -9 $(sudo lsof -t -i tcp:8084) || true

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
1111

1212
* Compatibility with Tarantool versions that don't support key_def and merger modules.
1313
* Ignoring `opts.first` on `crud.pairs` call
14+
* External `keydef` compatibility with built-in `merger`
1415

1516
## [0.7.0] - 2021-05-27
1617

crud/select/merger.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,10 @@ local function new(replicasets, space, index_id, func_name, func_args, opts)
165165
end
166166

167167
local keydef = Keydef.new(space, opts.field_names, index_id)
168+
-- When built-in merger is used with external keydef, `merger_lib.new(keydef)`
169+
-- fails. It's simply fixed by casting `keydef` to 'struct key_def&'.
170+
keydef = ffi.cast('struct key_def&', keydef)
171+
168172
local merger = merger_lib.new(keydef, merger_sources, {
169173
reverse = reverse_tarantool_iters[opts.tarantool_iter],
170174
})

0 commit comments

Comments
 (0)