- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
build: bump zstd submodule (ligurio/gh-8537-bump-zstd-1.5.5)
Updated third_party/zstd submodule from pre-v1.5.5 to v1.5.5 version. The new version fixes a rare corruption bug in high compression mode. While the probability might be very small, corruption issues are nonetheless very serious, so an update to this version is highly recommended, especially if you employ high compression modes (levels 16+). See full changelog in [1]. 1. https://github.com/facebook/zstd/releases/tag/v1.5.5 Fixes #8537 Follows up #8391 NO_DOC=build NO_TEST=build
test/fuzz: get rid of custom cflags
We manage using sanitizers with CMake flags: ENABLE_ASAN and ENABLE_UB_SANITIZER. sql_fuzzer enables Address Sanitizer by passing -fsanitize=address directly to CFLAGS. It works fine on OSS Fuzz, but breaks building fuzzers for Sydr [1], because Sydr requires building with disabled sanitizers, see documentation [2]. 1. https://github.com/ispras/oss-sydr-fuzz/pull/164 2. https://sydr-fuzz.github.io/docs/#%D0%BE%D0%B1%D0%B5%D1%80%D1%82%D0%BA%D0%B0-sydr Fixes #8529 NO_CHANGELOG=<fuzzing testing> NO_DOC=<fuzzing testing> NO_TEST=<fuzzing testing>
ci: fix sending failure message for fuzzing
NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
ci: save test artifacts to S3
This patch adds the step to all workflows with test-run tests to save test artifacts to S3 for providing artifact link from Multivac Grafana dashboard. Resolves tarantool/multivac#116 NO_DOC=CI NO_TEST=CI NO_CHANGELOG=CI Co-authored-by: Yaroslav Lobankov <y.lobankov@tarantool.org>
ci: add `s3-upload-artifact` action
This patch adds a local GitHub action to save test artifacts to S3. Print a warning if the provided artifact path doesn't exist. Part of tarantool/multivac#116 NO_DOC=CI NO_TEST=CI NO_CHANGELOG=CI Co-authored-by: Yaroslav Lobankov <y.lobankov@tarantool.org>
test/fuzz: add a grammar-based SQL fuzzer
Patch adds a grammar-based SQL fuzzer that based on libprotobuf-mutator [1] and libFuzzer [2]. Tarantool's SQL grammar [3][4] is described in Protobuf format in a file sql_query.proto, fuzzing engine generates SQL query in Protobuf format and then serializes it to a string (std::string) in sql_query_proto_to_string.* files. Resulted string is passed to SQL engine in Tarantool. NOTE: Current version of SQL grammar and serializers implements only `CREATE TABLE` and `SELECT` queries with all supported options. 1. https://github.com/google/libprotobuf-mutator 2. https://llvm.org/docs/LibFuzzer.html 3. https://www.tarantool.io/en/doc/latest/reference/reference_sql/sql_statements_and_clauses/ 4. https://www.tarantool.io/en/doc/latest/reference/reference_sql/sql_user_guide/ Part of #4826 NO_DOC=<fuzzing testing of SQL>
test/static: add a minimal seed corpus for SQL fuzzer
Seed corpus was generated by fuzzing test itself. Needed for #4826 NO_CHANGELOG=<fuzzing testing of SQL> NO_DOC=<fuzzing testing of SQL> NO_TEST=<fuzzing testing of SQL>
sql: make sql code fuzzing-friendly
SQL queries generated by fuzzing test could trigger a code that want access to a space cache. Usually this cause an abort, because fuzzing test doesn't perform a complete initialization of tarantool instance. To avoid this we isolated problem parts of code with macro FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. More appropriate solution will be implemented later. With introduced macro FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION we change behaviour of SQL engine and this breaks SQL regression tests. Therefore FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is disabled in test-release-asan. Needed for #4826 NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
sql: introduce a function sql_fuzz
SQL fuzzing test requires an entrypoint for SQL engine and the most suitable function for such purpose is sql_stmt_compile(). However, this function is not in a public API, and we don't want to expose it as public function. As a solution function sql_fuzz() is introduced, it is defined under a macro FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. Needed for #4826 NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
build: introduce an option for fuzzing-friendly mode
Patch introduce a macro FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. It is a common build macro recommended in libFuzzer's documentation [1]. 1. https://llvm.org/docs/LibFuzzer.html#fuzzer-friendly-build-mode Needed for #4826 NO_CHANGELOG=build NO_DOC=build NO_TEST=build
Branches
Tree
README.md
# Tarantool [![Actions Status][actions-badge]][actions-url] [![Code Coverage][coverage-badge]][coverage-url] [![OSS Fuzz][oss-fuzz-badge]][oss-fuzz-url] [![Telegram][telegram-badge]][telegram-url] [![GitHub Discussions][discussions-badge]][discussions-url] [![Stack Overflow][stackoverflow-badge]][stackoverflow-url] [Tarantool][tarantool-url] is an in-memory computing platform consisting of a database and an application server. It is distributed under [BSD 2-Clause][license] terms. Key features of the application server: * Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler, based on LuaJIT 2.1. * Cooperative multitasking, non-blocking IO. * [Persistent queues][queue]. * [Sharding][vshard]. * [Cluster and application management framework][cartridge]. * Access to external databases such as [MySQL][mysql] and [PostgreSQL][pg]. * A rich set of built-in and standalone [modules][modules]. Key features of the database: * MessagePack data format and MessagePack based client-server protocol. * Two data engines: 100% in-memory with complete WAL-based persistence and an own implementation of LSM-tree, to use with large data sets. * Multiple index types: HASH, TREE, RTREE, BITSET. * Document oriented JSON path indexes. * Asynchronous master-master replication. * Synchronous quorum-based replication. * RAFT-based automatic leader election for the single-leader configuration. * Authentication and access control. * ANSI SQL, including views, joins, referential and check constraints. * [Connectors][connectors] for many programming languages. * The database is a C extension of the application server and can be turned off. Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD (x86_64). Tarantool is ideal for data-enriched components of scalable Web architecture: queue servers, caches, stateful Web applications. To download and install Tarantool as a binary package for your OS or using Docker, please see the [download instructions][download]. To build Tarantool from source, see detailed [instructions][building] in the Tarantool documentation. To find modules, connectors and tools for Tarantool, check out our [Awesome Tarantool][awesome-list] list. Please report bugs to our [issue tracker][issue-tracker]. We also warmly welcome your feedback on the [discussions][discussions-url] page and questions on [Stack Overflow][stackoverflow-url]. We accept contributions via pull requests. Check out our [contributing guide][contributing]. Thank you for your interest in Tarantool! [actions-badge]: https://github.com/tarantool/tarantool/workflows/release/badge.svg [actions-url]: https://github.com/tarantool/tarantool/actions [coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master [coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=master [telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg [telegram-url]: http://telegram.me/tarantool [discussions-badge]: https://img.shields.io/github/discussions/tarantool/tarantool [discussions-url]: https://github.com/tarantool/tarantool/discussions [stackoverflow-badge]: https://img.shields.io/badge/stackoverflow-tarantool-orange.svg [stackoverflow-url]: https://stackoverflow.com/questions/tagged/tarantool [oss-fuzz-badge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg [oss-fuzz-url]: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest [tarantool-url]: https://www.tarantool.io/en/ [license]: LICENSE [modules]: https://www.tarantool.io/en/download/rocks [queue]: https://github.com/tarantool/queue [vshard]: https://github.com/tarantool/vshard [cartridge]: https://github.com/tarantool/cartridge [mysql]: https://github.com/tarantool/mysql [pg]: https://github.com/tarantool/pg [connectors]: https://www.tarantool.io/en/download/connectors [download]: https://www.tarantool.io/en/download/ [building]: https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/ [issue-tracker]: https://github.com/tarantool/tarantool/issues [contributing]: CONTRIBUTING.md [awesome-list]: https://github.com/tarantool/awesome-tarantool/