- Dec 11, 2024
-
-
Dmitry Ivanov authored
This reverts commit 13577990.
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
Previously, log_destroy would close log->fd even if it's one of the standard streams. This behavior almost never makes sense, unless one's trying to write a unix daemon which is obviously not the case. Closing stderr has the following side effects: - it breaks a reinit of the default logger; - it inhibits ASan's final leak report; - it causes a EPOLLHUP during a restart via `--entrypoint-fd` (Picodata). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
This stores all of the include directories of box into a file called box-include-args. We use this to generate certain FFI bindings using rust-bindgen. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
This image is suitable for release, debug and debug-asan builds. The image is somewhat heavy (1.08 GiB) due to llvm-18, but don't run tarantool's CI that often. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal Co-authored-by:
Dmitry Ivanov <d.ivanov@picodata.io> Co-authored-by:
Vitaly Shunkov <v.shunkov@picodata.io>
-
Dmitry Ivanov authored
Apparently, clang 18 is not particularly happy about luajit's static assert implementation: ``` In file included from tarantool/src/box/box.cc:38: In file included from tarantool/src/lua/utils.h:47: In file included from tarantool/third_party/luajit/src/lj_state.h:9: tarantool/third_party/luajit/src/lj_obj.h:488:1: error: variable length arrays in C++ are a Clang extension; did you mean to use 'static_assert'? [-Werror,-Wvla-extension-static-assert] 488 | LJ_STATIC_ASSERT(offsetof(Node, val) == 0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tarantool/third_party/luajit/src/lj_def.h:370:71: note: expanded from macro 'LJ_STATIC_ASSERT' 370 | extern void LJ_ASSERT_NAME(__COUNTER__)(int STATIC_ASSERTION_FAILED[(cond)?1:-1]) | ^~~~~~~~~~~ tarantool/third_party/luajit/src/lj_obj.h:488:18: note: cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression 488 | LJ_STATIC_ASSERT(offsetof(Node, val) == 0); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ tarantool/src/trivia/util.h:273:33: note: expanded from macro 'offsetof' 273 | #define offsetof(type, member) ((size_t) &((type *)0)->member) | ^ tarantool/third_party/luajit/src/lj_def.h:370:72: note: expanded from macro 'LJ_STATIC_ASSERT' 370 | extern void LJ_ASSERT_NAME(__COUNTER__)(int STATIC_ASSERTION_FAILED[(cond)?1:-1]) | ``` Luckily, we can just mute this. NO_DOC=<nothing interesting here> NO_TEST=<tested during build time> NO_CHANGELOG=<nothing interesting here>
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Picodata SQL now manages the Tarantool statement cache using a dedicated SQL fiber that handles preparation and unpreparation of statements based on an LRU eviction policy. Prepared statements can be executed across different sessions by SQL clients. Previously, when a client executed a prepared statement, it increased the reference count in the statement cache and linked the statement to the client's session. While this approach seemed fine, it caused issues during eviction, as references to these statements remained in client sessions, preventing proper eviction. This commit addresses the issue by ensuring that if a statement is added to the current session during execution, it is removed and the session state is restored once execution is complete. NO_DOC=internal NO_CHANGELOG=internal
-
Temporary spaces, used for cluster-wide SQL data materialization, were causing unnecessary netbox schema version bumps, leading to schema downloading via netbox, excessive Lua garbage and GC blocks. Since these tables are for internal SQL use, we don't need to inform netbox clients about schema changes. We now maintain separate schema versions: one for netbox clients and one for the internal prepared statement cache. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
* smoke test that verifies that cluster can be successfully bootstrapped * test diverging limbo owner (litmus test) - doesn't work on fork master, works with promote chains * test aba leader - two cases where elected leader fails to deliver promote to others * attempt to model 2+2 quorum lowering case * two cases with two outstanding promotes * use new injections for particular xrow types NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal Co-authored-by:
Dmitry Ivanov <ivadmi5@gmail.com>
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
Further reading: * https://git.picodata.io/picodata/tarantool/-/merge_requests/175 * https://github.com/tarantool/tarantool/pull/10334 NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
- Dec 09, 2024
-
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal Co-authored-by:
Dmitry Ivanov <ivadmi5@gmail.com>
-
- If you prepare and execute statement with params in the projection and then unprepare the statement, byte counter may show the wrong value or even overflow. - The problem is that when we compile sql statement, we set parameter type to 'any'. But when we execute the statement we set parameter type to actual type. Then we use this type in calculation of estimated of sql cache entry size. This leads to different estimated sizes of cache entry during prepare and during unprepare after statement was executed - Fix this by resetting type to 'any' after executing the statement NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch
-
BREAKING CHANGE!: 1. add session id argument to sql_prepare_ext 2. introduce sql_unprepare_ext function. This function removes prepared stmt using given session id. In picodata SQL, we may prepare stmt in one session and unprepare it in some other session, which does not know in what session the statement was prepared. Now sql_prepare_ext returns not only statement id, but also a session id. This way statement can be unprepared from other session using sql_unprepare_ext. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_CHANGELOG=internal NO_TEST=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_CHANGELOG=internal NO_TEST=internal
-
Replace fiber.sleep with luatest.helpers.retrying to make tests less flaky NO_DOC=internal NO_CHANGELOG=internal
-
WAL extensions allows to add auxiliary information to each write-ahead log record. WAL extensions configured by `box.cfg.wal_ext` option. Currently, there is only one builtin extension: `new_old`. `new_old` extension add information about new and old tuples for ddl operations. NO_DOC=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_CHANGELOG=internal NO_TEST=internal
-
NO_DOC=internal NO_CHANGELOG=internal NO_TEST=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
CentOS 7 reached its end-of-life on 30/06/2024, making its repositories unavailable. Therefore, continuing to build CI images for it is no longer sensible. We have now switched to Rocky Linux 8. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
BREAKING CHANGE!: 1. remove sql_prepare from the export list; 2. introduce sql_prepare_ext. The sql_prepare symbol previously included the tarantool port as an output parameter. However, this structure was inconvenient for libraries using the C API, as they primarily required just the statement ID. To address this issue, the sql_prepare symbol was replaced with the sql_prepare_ext symbol. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch
-
Previously, users with multiple connections to tarantool instance couldn't share prepared statements across sessions. They had to manually call prepare in each session before execution. This commit automates this process for the exported version of SQL prepared statement execution (sql_execute_prepared_ext symbol). Original Lua execution keeps the old behavior for backward compatibility. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch NO_TEST=picodata internal patch
-
Previously, sql_prepare_and_execute and sql_execute_prepared functions didn't follow a convention to keep output parameters (the port to be exact) at the end of the argument list. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch NO_TEST=picodata internal patch
-
BREAKING CHANGE!: 1. sql_bind_list_decode - removed 2. sql_execute_prepared_ext - new arguments 3. sql_prepare_and_execute_ext - exported There were several reasons to refactor the API. 1. sql_bind_list_decode (decodes message pack parameters into internal C bind structure) is very difficult to use without memory leaks (as it allocates results on fiber()->gc). 2. sql_execute_prepared_ext missed vdbe step limit in parameters and used the default value. 3. Sometimes SQL queries don't fit into prepared statement cache and the user still wants to execute them via a slow pass with full compilations from the query text. That was the reason to export sql_prepare_and_execute_ext symbol. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Dmitry Ivanov authored
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal The following commit introduced a tautological if expression: ```gitcommit sql: introduce structs assembling DDL arguments during parsing (ba56b145fafaa3) ``` Due to the changes in commit ```gitcommit sql: refactor memory allocation system (cb777136dd7a0c) ``` the allocations in sql expressions became infallible, which means that we may safely fix static analysis warnings by dropping the tautological comparison altogether. Original patch by Feodor Alexandrov.
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-