diff --git a/changelogs/2.11.3.md b/changelogs/2.11.3.md new file mode 100644 index 000000000000..ee3b7006aafc --- /dev/null +++ b/changelogs/2.11.3.md @@ -0,0 +1,158 @@ +# 2.11.3 + +Date: 2024-04-17 +Tag: 2.11.3 + +## Overview + +2.11.3 is the next stable release in the [long-term support (LTS) +version][release_policy][release_policy] 2.11.x release series. + +The label "stable" means there are 1.10.x-based applications running in +production for quite a while without known crashes, incorrect results or +other showstopper bugs. + +This release resolves roughly 54 issues since the 2.11.2 version. + +[release_policy]: https://www.tarantool.io/en/doc/latest/release/policy/ +[issues]: https://github.com/tarantool/tarantool/issues + +## Compatibility + +Tarantool 2.11.x is backward compatible with Tarantool 1.10.x in binary data +layout, client-server protocol and replication protocol. + +Please [upgrade][upgrade] using the `box.schema.upgrade()` procedure to unlock +all the new features of the 2.11.x series. + +[upgrade]: https://www.tarantool.io/en/doc/latest/book/admin/upgrades/ + +## Bugs fixed + +### Core + +* Fixed a bug when the assertion in `box_wait_limbo_acked` would fail. The + assertion is that the lsn of the last entry in limbo is always positive after + `wal_sync`. Before the patch, if the `replication_synchro_quorum` was set too + high on the replica, it would never be reached. After the timeout was + triggered, the user received a `TimedOut` error. If the quorum was greater + than or equal to the number of instances in the replica set, the program + immediately stopped with a segmentation fault (gh-9235). +* Fixed a bug when the assertion in `box_promote_qsync` would fail in the + debug build mode. The assertion is that at the moment when `box_promote_qsync` + is called, no other promote is being executed. It turned out that this + assertion is basically incorrect. In the release build mode, this incorrect + assumption could potentially lead to writing 2 PROMOTE entries in the same + term (gh-9263). +* The error messages are no longer stripped (gh-4975). +* Increased the maximum number of tuples in a hash index from 2147483648 (2^31) + to 4294967288 (2^32 - 8) (gh-9864). +* Fixed a bug that resulted in a crash when both MVCC and index with the `exclude_null` part were used (gh-9954). +* Now `box.cfg()` correctly interprets the `TT_LISTEN` and `TT_REPLICATION` + environment variables with query parameters (gh-9539). +* The `exclude_null` option is now supported by functional indexes (gh-9732). + +### Replication + +* Now transactions are not rolled back if the transaction fiber is + cancelled when waiting for quorum from replicas (gh-9480). +* Fixed a bug when replication broke with `ER_PROTOCOL` when transactions ended + with a local space operation (gh-9491). +* Fixed an issue when it was possible to use the + `box_collect_confirmed_vclock` stack after return (gh-9505). + +### LuaJIT + +Backported patches from the vanilla LuaJIT trunk (gh-9145, gh-9595). The +following issues were fixed as part of this activity: + +* Fixed CSE of a `REF_BASE` operand across `IR_RETF`. +* Fixed the fold rule for `BUFHDR APPEND`. +* Fixed HREFK, ALOAD, HLOAD, forwarding vs. `table.clear()`. +* Fixed snapshot PC when linking to `BC_JLOOP` that was a `BC_RET*`. +* Fixed dangling references to CType. +* Ensured returned string is alive in `ffi.typeinfo()`. +* Fixed the missing initialization of the internal structure, leading to a + crash when recording a trace with an allocation of cdata. +* Limited exponent range in number parsing by `2^20`. +* Fixed double-emitting of `IR_NEWREF` when restoring sunk values for side + trace (gh-7937). +* Fixed the `IR_HREFK` optimization for huge tables. +* Fixed recording of the `__concat` metamethod. +* Fixed the embedded bytecode loader. +* Improved error reporting on stack overflow. +* Fixed assertion on the Lua stack overflow for a stitched trace. +* Fixed snapshoting of functions for non-base frames. +* Fixed a crash in the allocator during sysprof profiling (gh-8140). +* No side traces are recorded now after disabling the JIT via `jit.off()`. +* Fixed handling of instable boolean types in TDUP load forwarding. +* Fixed a crash during the restoration of the sunk `TNEW` with a huge array + part. +* Fixed stack-buffer-overflow for `string.format()` with `%g` modifier and + length modifier. +* Fixed recording of `setmetatable()` with `nil` as the second argument. +* Fixed recording of `select()` in case with negative first argument. +* Fixed use-def analysis for child upvalues. +* Added the `cc` file type for saving bytecode. +* Fixed C file generation in `jit.bcsave`. +* Fixed trace error handling during trace stitching. +* Fixed recording of the `__concat` metamethod for vararg or protected frames. +* Fixed recording of a side trace returning to a lower frame with a maximum + possible frame size. +* Fixed `debug.setmetatable()` and `lua_setmetatable()` with enabled + `jit.dump()`. +* Fixed recording of side traces with a down-recursion. + +### Lua + +* Fixed a memory leak in `error_object:set_prev()` (gh-9694). +* Fixed alias detection in the YAML encoder (gh-8350, gh-8310, gh-8321). +* Fixed a regression that caused the `wait_connected = false` option of + `net_box.connect` to yield, despite being required to be fully asynchronous + (gh-9489). +* Fixed a bug in `net.box` when a connection with asynchronous requests could + get garbage collected (gh-9629). +* Fixed an inconsistency between the documented `on_disconnect` trigger behavior + of `net.box` connections when an error is thrown and the actual behavior + (gh-9717). +* Fixed a bug in the `on_disconnect` trigger of `net.box` connections that + caused Tarantool server to hang indefinitely when an error was thrown from the + trigger (gh-9797). +* The `on_schema_reload` trigger behavior of `net.box` connections when an + error is thrown is now consistent with the behavior of the `on_disconnect` + trigger (gh-9679). +* Fixed a bug when a `net.box` connection remained active after being closed + from the connection's `on_connect` trigger (gh-9827). + +#### HTTP client + +* Fixed a crash on garbage collection of httpc objects (gh-9283). +* Fixed a crash due to a race in GC finalizers (gh-9346). +* Fixed behaviour of GC-finalizer of HTTP client Lua object when chunked HTTP + request is alive. (gh-9453). + +### SQL + +* Fixed a memory leak when an error occurred in `SELECT` with a `GROUP BY` + expression (gh-8535, ghs-125). +* Fixed a crash when a decimal literal representing a decimal number greater + than or equal to 10^38 was parsed in SQL (gh-9469). + +### Datetime + +* Fixed a bug in `strptime` when the assertion was triggered (gh-8525). + +## Build + +* Updated libcurl to version 8.5.0. + +## Testing + +* Bumped `metrics` submodule to commit `3370f85` to fix compatibility with + `luatest` commit `d985997`. + +## Tools + +* Added the `--human-readable` option for the `misc.memprof` parser to print + sizes like 1KiB, 234MiB, 2GiB, etc. + Made the errors from the profilers more user-friendly (gh-9217). diff --git a/changelogs/unreleased/bump-libcurl-to-8.4.0.md b/changelogs/unreleased/bump-libcurl-to-8.4.0.md deleted file mode 100644 index 578a55683e18..000000000000 --- a/changelogs/unreleased/bump-libcurl-to-8.4.0.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/build - -* Updated libcurl to version 8.4.0. diff --git a/changelogs/unreleased/bump-libcurl-to-8.5.0.md b/changelogs/unreleased/bump-libcurl-to-8.5.0.md deleted file mode 100644 index 111a0b4ecbec..000000000000 --- a/changelogs/unreleased/bump-libcurl-to-8.5.0.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/build - -* Updated libcurl to version 8.5.0. diff --git a/changelogs/unreleased/bump-metrics-to-3370f85.md b/changelogs/unreleased/bump-metrics-to-3370f85.md deleted file mode 100644 index fe5a6f649f84..000000000000 --- a/changelogs/unreleased/bump-metrics-to-3370f85.md +++ /dev/null @@ -1,4 +0,0 @@ -## testing - -* Bumped `metrics` submodule to commit `3370f85` to fix compatibility with - `luatest` commit `d985997`. diff --git a/changelogs/unreleased/fix-yaml-alias-serialization.md b/changelogs/unreleased/fix-yaml-alias-serialization.md deleted file mode 100644 index 057322ca5a6b..000000000000 --- a/changelogs/unreleased/fix-yaml-alias-serialization.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/lua - -* Fixed alias detection in the YAML encoder (gh-8350, gh-8310, gh-8321). diff --git a/changelogs/unreleased/gh-4975-errors-in-init-scripts-are-stripped.md b/changelogs/unreleased/gh-4975-errors-in-init-scripts-are-stripped.md deleted file mode 100644 index 10b1e3d3c2c0..000000000000 --- a/changelogs/unreleased/gh-4975-errors-in-init-scripts-are-stripped.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/core - -* The error messages are no longer stripped (gh-4975). diff --git a/changelogs/unreleased/gh-5994-memprof-human-readable.md b/changelogs/unreleased/gh-5994-memprof-human-readable.md deleted file mode 100644 index 45d9ee14936d..000000000000 --- a/changelogs/unreleased/gh-5994-memprof-human-readable.md +++ /dev/null @@ -1,6 +0,0 @@ -## feature/tools - -Added the `--human-readable` option for the `misc.memprof` parser to print -sizes like 1KiB, 234MiB, 2GiB, etc. - -Made the errors from the profilers more user-friendly (gh-9217). diff --git a/changelogs/unreleased/gh-8140-crash-in-allocator.md b/changelogs/unreleased/gh-8140-crash-in-allocator.md deleted file mode 100644 index ddb680ebc50d..000000000000 --- a/changelogs/unreleased/gh-8140-crash-in-allocator.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/luajit - -* Fixed a crash in the allocator during sysprof profiling (gh-8140). diff --git a/changelogs/unreleased/gh-8525-strptime-fix.md b/changelogs/unreleased/gh-8525-strptime-fix.md deleted file mode 100644 index a883e427bea0..000000000000 --- a/changelogs/unreleased/gh-8525-strptime-fix.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/datetime - -* Fixed a bug in `strptime` when the assertion was triggered (gh-8525). diff --git a/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md b/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md deleted file mode 100644 index d31ba0034546..000000000000 --- a/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/sql - -* Fixed a memory leak when an error occurred in `SELECT` with a `GROUP BY` - expression (gh-8535, ghs-125). diff --git a/changelogs/unreleased/gh-9145-luajit-fixes.md b/changelogs/unreleased/gh-9145-luajit-fixes.md deleted file mode 100644 index 42db77b53f17..000000000000 --- a/changelogs/unreleased/gh-9145-luajit-fixes.md +++ /dev/null @@ -1,22 +0,0 @@ -## bugfix/luajit - -Backported patches from the vanilla LuaJIT trunk (gh-9145). The following issues -were fixed as part of this activity: - -* Fixed CSE of a `REF_BASE` operand across `IR_RETF`. -* Fixed the fold rule for `BUFHDR APPEND`. -* Fixed HREFK, ALOAD, HLOAD, forwarding vs. `table.clear()`. -* Fixed snapshot PC when linking to `BC_JLOOP` that was a `BC_RET*`. -* Fixed dangling references to CType. -* Ensured returned string is alive in `ffi.typeinfo()`. -* Fixed the missing initialization of the internal structure, leading to a - crash when recording a trace with an allocation of cdata. -* Limited exponent range in number parsing by `2^20`. -* Fixed double-emitting of `IR_NEWREF` when restoring sunk values for side - trace (gh-7937). -* Fixed the `IR_HREFK` optimization for huge tables. -* Fixed recording of the `__concat` metamethod. -* Fixed the embedded bytecode loader. -* Improved error reporting on stack overflow. -* Fixed assertion on the Lua stack overflow for a stitched trace. -* Fixed snapshoting of functions for non-base frames. diff --git a/changelogs/unreleased/gh-9235-assertion_in_box_wait_limbo_acked.md b/changelogs/unreleased/gh-9235-assertion_in_box_wait_limbo_acked.md deleted file mode 100644 index 4201301bd038..000000000000 --- a/changelogs/unreleased/gh-9235-assertion_in_box_wait_limbo_acked.md +++ /dev/null @@ -1,9 +0,0 @@ -## bugfix/core - -* Fixed a bug when the assertion in `box_wait_limbo_acked` would fail. The - assertion is that the lsn of the last entry in limbo is always positive after - `wal_sync`. Before the patch, if the `replication_synchro_quorum` was set too - high on the replica, it would never be reached. After the timeout was - triggered, the user received a `TimedOut` error. If the quorum was greater - than or equal to the number of instances in the replica set, the program - immediately stopped with a segmentation fault (gh-9235). diff --git a/changelogs/unreleased/gh-9263-assertion-in-box-promote-qsync.md b/changelogs/unreleased/gh-9263-assertion-in-box-promote-qsync.md deleted file mode 100644 index d5764e92fd18..000000000000 --- a/changelogs/unreleased/gh-9263-assertion-in-box-promote-qsync.md +++ /dev/null @@ -1,8 +0,0 @@ -## bugfix/core - -* Fixed a bug when the assertion in `box_promote_qsync` would fail in the - debug build mode. The assertion is that at the moment when `box_promote_qsync` - is called, no other promote is being executed. It turned out that this - assertion is basically incorrect. In the release build mode, this incorrect - assumption could potentially lead to writing 2 PROMOTE entries in the same - term (gh-9263). diff --git a/changelogs/unreleased/gh-9283-fix-crash-on-gc-collect.md b/changelogs/unreleased/gh-9283-fix-crash-on-gc-collect.md deleted file mode 100644 index d35973abc4c5..000000000000 --- a/changelogs/unreleased/gh-9283-fix-crash-on-gc-collect.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/http - -* Fixed a crash on garbage collection of httpc objects (gh-9283). diff --git a/changelogs/unreleased/gh-9346-crash-on-GC-collection-of-http-objects.md b/changelogs/unreleased/gh-9346-crash-on-GC-collection-of-http-objects.md deleted file mode 100644 index 35e9b7cd53d4..000000000000 --- a/changelogs/unreleased/gh-9346-crash-on-GC-collection-of-http-objects.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/http - -* Fixed a crash due to a race in GC finalizers (gh-9346). diff --git a/changelogs/unreleased/gh-9453-http-client-is-gc-collected-when-chunked-request-is-alive.md b/changelogs/unreleased/gh-9453-http-client-is-gc-collected-when-chunked-request-is-alive.md deleted file mode 100644 index a8cc14978bdf..000000000000 --- a/changelogs/unreleased/gh-9453-http-client-is-gc-collected-when-chunked-request-is-alive.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/http - -* Fixed behaviour of GC-finalizer of HTTP client Lua object when chunked HTTP - request is alive. (gh-9453). diff --git a/changelogs/unreleased/gh-9469-too-big-decimal.md b/changelogs/unreleased/gh-9469-too-big-decimal.md deleted file mode 100644 index 641e4bde2207..000000000000 --- a/changelogs/unreleased/gh-9469-too-big-decimal.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/sql - -* Fixed a crash when a decimal literal representing a decimal number greater - than or equal to 10^38 was parsed in SQL (gh-9469). diff --git a/changelogs/unreleased/gh-9480-dont-rollback-on-quorum-wait-cancel.md b/changelogs/unreleased/gh-9480-dont-rollback-on-quorum-wait-cancel.md deleted file mode 100644 index 2ec6a52d1ebb..000000000000 --- a/changelogs/unreleased/gh-9480-dont-rollback-on-quorum-wait-cancel.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/replication - -* Now transactions are not rolled back if the transaction fiber is - cancelled when waiting for quorum from replicas (gh-9480). diff --git a/changelogs/unreleased/gh-9489-netbox-wait-connected.md b/changelogs/unreleased/gh-9489-netbox-wait-connected.md deleted file mode 100644 index ce529e04c07d..000000000000 --- a/changelogs/unreleased/gh-9489-netbox-wait-connected.md +++ /dev/null @@ -1,5 +0,0 @@ -## bugfix/lua - -* Fixed a regression that caused the `wait_connected = false` option of - `net_box.connect` to yield, despite being required to be fully asynchronous - (gh-9489). diff --git a/changelogs/unreleased/gh-9491-last-local-row-tx-boundary.md b/changelogs/unreleased/gh-9491-last-local-row-tx-boundary.md deleted file mode 100644 index 340149cf2ed7..000000000000 --- a/changelogs/unreleased/gh-9491-last-local-row-tx-boundary.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/replication - -* Fixed a bug when replication broke with `ER_PROTOCOL` when transactions ended - with a local space operation (gh-9491). diff --git a/changelogs/unreleased/gh-9505-relay-stack-use-after-return.md b/changelogs/unreleased/gh-9505-relay-stack-use-after-return.md deleted file mode 100644 index 788d22506707..000000000000 --- a/changelogs/unreleased/gh-9505-relay-stack-use-after-return.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/replication - -* Fixed an issue when it was possible to use the - `box_collect_confirmed_vclock` stack after return (gh-9505). diff --git a/changelogs/unreleased/gh-9539-box-cfg-env-vars-with-query-params.md b/changelogs/unreleased/gh-9539-box-cfg-env-vars-with-query-params.md deleted file mode 100644 index 59fe7ceb4d83..000000000000 --- a/changelogs/unreleased/gh-9539-box-cfg-env-vars-with-query-params.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/box - -* Now `box.cfg()` correctly interprets the `TT_LISTEN` and `TT_REPLICATION` - environment variables with query parameters (gh-9539). diff --git a/changelogs/unreleased/gh-9595-luajit-fixes.md b/changelogs/unreleased/gh-9595-luajit-fixes.md deleted file mode 100644 index 19ecd5acb0ea..000000000000 --- a/changelogs/unreleased/gh-9595-luajit-fixes.md +++ /dev/null @@ -1,23 +0,0 @@ -## bugfix/luajit - -Backported patches from the vanilla LuaJIT trunk (gh-9595). The following issues -were fixed as part of this activity: - -* No side traces are recorded now after disabling the JIT via `jit.off()`. -* Fixed handling of instable boolean types in TDUP load forwarding. -* Fixed a crash during the restoration of the sunk `TNEW` with a huge array - part. -* Fixed stack-buffer-overflow for `string.format()` with `%g` modifier and - length modifier. -* Fixed recording of `setmetatable()` with `nil` as the second argument. -* Fixed recording of `select()` in case with negative first argument. -* Fixed use-def analysis for child upvalues. -* Added the `cc` file type for saving bytecode. -* Fixed C file generation in `jit.bcsave`. -* Fixed trace error handling during trace stitching. -* Fixed recording of the `__concat` metamethod for vararg or protected frames. -* Fixed recording of a side trace returning to a lower frame with a maximum - possible frame size. -* Fixed `debug.setmetatable()` and `lua_setmetatable()` with enabled - `jit.dump()`. -* Fixed recording of side traces with a down-recursion. diff --git a/changelogs/unreleased/gh-9629-netbox-async-request-connection-gc.md b/changelogs/unreleased/gh-9629-netbox-async-request-connection-gc.md deleted file mode 100644 index 71c05bc51d3e..000000000000 --- a/changelogs/unreleased/gh-9629-netbox-async-request-connection-gc.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/lua - -* Fixed a bug in `net.box` when a connection with asynchronous requests could - get garbage collected (gh-9629). diff --git a/changelogs/unreleased/gh-9677-netbox-on_disconnect-error-behaviour.md b/changelogs/unreleased/gh-9677-netbox-on_disconnect-error-behaviour.md deleted file mode 100644 index d28981b9920e..000000000000 --- a/changelogs/unreleased/gh-9677-netbox-on_disconnect-error-behaviour.md +++ /dev/null @@ -1,5 +0,0 @@ -## bugfix/lua - -* Fixed an inconsistency between the documented `on_disconnect` trigger behavior - of `net.box` connections when an error is thrown and the actual behavior - (gh-9717). diff --git a/changelogs/unreleased/gh-9679-on_schema_reload-error-behaviour.md b/changelogs/unreleased/gh-9679-on_schema_reload-error-behaviour.md deleted file mode 100644 index 8a9c9182429e..000000000000 --- a/changelogs/unreleased/gh-9679-on_schema_reload-error-behaviour.md +++ /dev/null @@ -1,5 +0,0 @@ -## bugfix/lua - -* The `on_schema_reload` trigger behavior of `net.box` connections when an - error is thrown is now consistent with the behavior of the `on_disconnect` - trigger (gh-9679). diff --git a/changelogs/unreleased/gh-9694-memory-leak-in-error_object-set_prev.md b/changelogs/unreleased/gh-9694-memory-leak-in-error_object-set_prev.md deleted file mode 100644 index 46e0085c7a48..000000000000 --- a/changelogs/unreleased/gh-9694-memory-leak-in-error_object-set_prev.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/lua - -* Fixed a memory leak in `error_object:set_prev()` (gh-9694). diff --git a/changelogs/unreleased/gh-9732-func-index-exclude-null.md b/changelogs/unreleased/gh-9732-func-index-exclude-null.md deleted file mode 100644 index f9a4e7140c56..000000000000 --- a/changelogs/unreleased/gh-9732-func-index-exclude-null.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/box - -* The `exclude_null` option is now supported by functional indexes (gh-9732). diff --git a/changelogs/unreleased/gh-9797-netbox-on_disconnect-error-hangs-server.md b/changelogs/unreleased/gh-9797-netbox-on_disconnect-error-hangs-server.md deleted file mode 100644 index 3603c856a3b6..000000000000 --- a/changelogs/unreleased/gh-9797-netbox-on_disconnect-error-hangs-server.md +++ /dev/null @@ -1,5 +0,0 @@ -## bugfix/lua - -* Fixed a bug in the `on_disconnect` trigger of `net.box` connections that - caused Tarantool server to hang indefinitely when an error was thrown from the - trigger (gh-9797). diff --git a/changelogs/unreleased/gh-9827-netbox-on_connect-close.md b/changelogs/unreleased/gh-9827-netbox-on_connect-close.md deleted file mode 100644 index c7b2c0b28237..000000000000 --- a/changelogs/unreleased/gh-9827-netbox-on_connect-close.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/lua - -* Fixed a bug when a `net.box` connection remained active after being closed - from the connection's `on_connect` trigger (gh-9827). diff --git a/changelogs/unreleased/gh-9864-allow-up-to-2-32-tuples-in-hash-index.md b/changelogs/unreleased/gh-9864-allow-up-to-2-32-tuples-in-hash-index.md deleted file mode 100644 index b0f48852aed5..000000000000 --- a/changelogs/unreleased/gh-9864-allow-up-to-2-32-tuples-in-hash-index.md +++ /dev/null @@ -1,4 +0,0 @@ -## bugfix/core - -* Increased the maximum number of tuples in a hash index from 2147483648 (2^31) - to 4294967288 (2^32 - 8) (gh-9864). diff --git a/changelogs/unreleased/gh-9954-mvcc-crash-with-exclude-null.md b/changelogs/unreleased/gh-9954-mvcc-crash-with-exclude-null.md deleted file mode 100644 index a818d001a687..000000000000 --- a/changelogs/unreleased/gh-9954-mvcc-crash-with-exclude-null.md +++ /dev/null @@ -1,3 +0,0 @@ -## bugfix/core - -* Fixed a bug that resulted in a crash when both MVCC and index with the `exclude_null` part were used (gh-9954).