Commit Briefs

f2cbc88697 Olga Arkhangelskaia

ctl: added functionality to detect and prune dead replicas (OKriw/gh-3110-prune-dead-replica-from-replicaset-2.1)

After restart of replicaset or after some configuration changes replicaset may suffer from littering the system space by "dead" replicas. To detect and throw away such replica replicaset_list_inactive(), replica_prune(), replicaset_purge() are introduced. replicaset_list_inactive() returns uuid table of dead replicas replica_prune(uuid) throws away replica with given id from system space replicaset_purge([uuid]) throws away table of dead replicas, that is provided by admin or by replicaset_list_inactive(). Closes #3110 @TarantoolBot document Title: Introduce replicaset_list_inactive(), replica_prune(uuid), replicaset_purge([uuid]) After some changes in replicaset (restart, configuration change) replicaset may suffer from leftovers or previous configurations: empty replicas with uuid, but without any read/write activity. To delete such trash from system the space space, replicaset_list_inactive(), replica_prune(), replicaset_purge() are introduced. replicaset_list_inactive() lists uuid table of such "zombie" replicas. replica_prune(uuid) throws away replica with given id from system space replicaset_purge([uuid]) throws away table of dead replicas, that is provided by admin or by replicaset_list_inactive().


e5834e4335 Vladimir Davydov

sql: check read access while executing SQL query

Since SQL front-end is not using box API, no checkes for read access are performed by VDBE engine. Add check to IteratorOpen op-code to make sure that read privilege exists for given space. Note, that there's is no need to perform DML/DDL checkes as they're performed by Tarantool's core. @TarantoolBot document Title: Document behaviour of SQL in presence of read access restrictions. Need to clarify, that if there's no read access to the space, then not only SELECT statements will fail, but also those DML which implies reading from spaces indirectly, e.g.: UPDATE t1 SET a=2 WHERE b=3; Closes #2362


5b7cc29457 Vladimir Davydov

sql: use space_by_name in SQL

Since hash, which maps space name to space pointer was introduced in previous patch, use it in SQL front-end as it is heavily needed. @locker: removed a couple of useless assertions and variable renames


030d28f55f Vladimir Davydov

schema: add space name cache

Since SQL is heavily using name -> space mapping, introduce (instead of scanning _space space) dedicated cache, which maps space name to space pointer. @locker: code cleanup


d792fd2664 Vladimir Davydov

alter: install space commit/rollback triggers before preparing sql view

sql_compile_view() may fail, in which case the space will never be deleted from (in case of space creation) or inserted back into (in case of space drop) the space cache, because commit/rollback triggers, which are supposed to do the job, are only installed after preparing a view. Fix this by installing triggers before sql_compile_view(). No need to write a test as without this commit sql/view test will crash after applying the next commit (the one that introduces space name cache). Fixes commit dc358cb01428 ("sql: rework VIEW internals").


9975ed0655 Vladimir Davydov

Merge branch '1.10-features' into 2.1


9dcc7849a8 Vladimir Davydov

Merge branch '1.10' into 1.10-features


9c6c448353 Kirill Yukhin

sql: fix fk set null clause

After changing behavior of the `IS` operator (#b3a3ddb571), `SET NULL` was rewritten to use `EQ` instead. Which doesn't respect NULLs. This commit fixes the null related behavior by emitting logical constructions equivalent for this case to old `IS`. The new expression works differently than old `IS` for nulls, however the difference doesn't change anything, because matched rows are then searched in a child table with `EQ` expression which do not match nulls. Before: `oldval` old_is `newval` Now: `oldval` is_null or (`newval` is_not_null and `oldval` eq `newval`) Closes #3645


022a3c5026 Vladimir Davydov

lua: fix tuple cdata collecting

In some cases luajit does not collect cdata objects which were transformed with ffi.cast as tuple_bless does. In consequence, internal table with gc callback overflows and then lua crashes. There might be an internal luajit issue because it fires only for jitted code. But assigning a gc callback before transformation fixes the problem. Closes #3751


b99453253c Konstantin Osipov

Update README.MacOSX (#3758)


Branches



























































































Tags

Tree

.appveyor.ymlcommits | blame
.gdbinitcommits | blame
.github/
.gitignorecommits | blame
.gitmodulescommits | blame
.travis.mkcommits | blame
.travis.ymlcommits | blame
AUTHORScommits | blame
CMakeLists.txtcommits | blame
Dockerfile.staticbuildcommits | blame
Doxyfilecommits | blame
Doxyfile.API.incommits | blame
FreeBSD/
Jenkinsfilecommits | blame
LICENSEcommits | blame
README.FreeBSDcommits | blame
README.MacOSXcommits | blame
README.mdcommits | blame
TODOcommits | blame
apk/
cmake/
debian/
doc/
extra/
rpm/
rump/
snapcraft.yamlcommits | blame
src/
test/
test-run$commits | blame
third_party/

README.md

# Tarantool

[![Build Status][travis-badge]][travis-url]
[![Code Coverage][coverage-badge]][coverage-url]
[![Telegram][telegram-badge]][telegram-url]
[![Slack][slack-badge]][slack-url]
[![Gitter][gitter-badge]][gitter-url]
[![Google Groups][groups-badge]][groups-url]

http://tarantool.org

Tarantool is an in-memory database and application server.

Key features of the application server:
 * 100% compatible drop-in replacement for Lua 5.1,
   based on LuaJIT 2.1.
   Simply use #!/usr/bin/tarantool instead of
   #!/usr/bin/lua in your script.
 * full support for Lua modules and a rich set of
   own modules, including cooperative multitasking,
   non-blocking I/O, access to external databases, etc

Key features of the database:
 * MsgPack data format and MsgPack based
   client-server protocol
 * two data engines: 100% in-memory with
   optional persistence and a 2-level disk-based
   B-tree, to use with large data sets
 * multiple index types: HASH, TREE, RTREE, BITSET
 * asynchronous master-master replication
 * authentication and access control
 * the database is just a C extension to the
   app server and can be turned off

Supported platforms are Linux/x86 and FreeBSD/x86, Mac OS X.

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, please visit
https://tarantool.org/en/download/download.html.

To build Tarantool from source, see detailed instructions in the Tarantool
documentation at https://tarantool.org/en/doc/dev_guide/building_from_source.html.

Please report bugs at http://github.com/tarantool/tarantool/issues
We also warmly welcome your feedback in the discussion mailing
list, tarantool@googlegroups.com.

Thank you for your interest in Tarantool!

[travis-badge]: https://api.travis-ci.org/tarantool/tarantool.svg?branch=2.1
[travis-url]: https://travis-ci.org/tarantool/tarantool
[coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=2.1
[coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=2.1
[groups-badge]: https://img.shields.io/badge/Google-Groups-orange.svg
[groups-url]: https://groups.google.com/forum/#!forum/tarantool
[telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg
[telegram-url]: http://telegram.me/tarantool
[slack-badge]: https://img.shields.io/badge/Slack-join%20chat-lightgrey.svg
[slack-url]: http://slack.tarantool.org/
[gitter-badge]: https://badges.gitter.im/Join%20Chat.svg
[gitter-url]: https://gitter.im/tarantool/tarantool