- Jul 19, 2018
-
-
Kirill Yukhin authored
Before the patch, big integer constants were silently converted to floating point values. Fix that by issuing error message if value doesn't fit in int64_t range. Also, refactor surrounding code as per Tarantool's code style. Closes #2347
-
- Jul 17, 2018
-
-
Ivan Koptelov authored
Now every sqlite struct Index is created with tnt struct index_def inside. This allows us to use tnt index_def in work with sqlite indexes in the same manner as with tnt index and is a step to remove sqlite Index with tnt index. Fields coll_array, coll_id_array, aiColumn, sort_order, aiRowLogEst and zName are removed from Index. All usages of this fields changed to usage of corresponding index_def or index_def->opts fields. index_is_unique(), sql_index_collation() and index_column_count() are removed with calls of index_def corresponding fields. Also there is small change in behavior: before the patch a statement like CREATE TABLE t1(a,b, PRIMARY KEY(a,b), UNIQUE(a,b)) created only one constraint index (for primary key) and no index for UNIQUE constraint (since it is upon the same columns), neither it is named or non-named constraint. After the patch index will be always created for named constraints. It is a temporary solution. In future it's preferable not to create an index, but to make some record in _constraints space that this named unique constraint implemented with the same index as primary key constraint. Closes: #3369, #3498
-
Kirill Yukhin authored
-
Kirill Shcherbatov authored
Binary search in whereKeyStats function that uses routine sqlite3VdbeRecordCompareMsgpack returned invalid result, because it made wrong assumption about the number of coinciding index columns based on _sql_stat4. But all collected index statistics were wrong. The analyzeOneTable routine used to call sqlite3GetTempRange and sqlite3ReleaseTempRange functions inside of cycle intensively changes Parser->nMem value. Thanks this pattern routine sqlite3ReleaseTempRange could push nMem variable onto aTempReg queue. As Parser->nMem could be bigger next time, this variable may be used twice: [74, 'Column', 4, 1, 11, '', '00', 'r[11]='] [75, 'Column', 4, 2, 12, '', '00', 'r[12]='] |-> [76, 'Column', 4, 3, 13, '', '00', 'r[13]='] [77, 'Column', 4, 4, 14, '', '00', 'r[14]='] !rewrite [78, 'Column', 4, 0, 13, '', '00', 'r[13]=ID'] [79, 'MakeRecord', 13, 1, 6, '', '00', 'r[6]=mkrec(r[13])'] Thus all assumptions about data below should be invalid and some artifacts could exhibit. Example: \set language sql CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, a, b, c, f, d, e); CREATE INDEX i1 ON t1(a, b, c, f, d); \set language lua for i = 0, 100 do box.sql.execute(string.format("INSERT INTO t1 VALUES(null, 'x', 'y', 'z', 'a', %s, %s);", i, math.floor(i / 2))) end \set language sql SELECT * FROM "_sql_stat4"; --- ['T1', 'I1', '101 101 1 1 1', '0 0 44 44 44', '0 0 44 44 44', ['x', 'y', 'z', 'a', 44]] --- Expected: --- ['T1', 'I1', '101 101 101 101 1', '0 0 0 0 44', '0 0 0 0 44', ['x', 'y', 'z', 'a', 44]] --- Resolves #2847.
-
Vladimir Davydov authored
If is_first_insert flag is set and vy_stmt_type(rv->tuple) equals IPROTO_DELETE, we free rv->tuple, but then we dereference it via an on-stack variable to check if we need to turn a REPLACE into an INSERT or vice versa. Fix this.
-
Vladimir Davydov authored
This is not necessary, as we can use fiber()->gc, as we usually do.
-
Vladimir Davydov authored
Move key_def creation to compare_write_iterator_results as it is the same for all test cases. Performance is not an issue here, obviously, so we can close our eyes to the fact that now we create a new key def for each test cases.
-
Vladimir Davydov authored
The new function inserts a new item into the list at the specified postion.
-
- Jul 16, 2018
-
-
Kirill Yukhin authored
-
Kirill Yukhin authored
-
Georgy Kirichenko authored
If a fiber pool reuses already canceled fiber then the fiber reports an error for any next request. Now canceled fiber returns and fiber pool creates a new one. Fixes #3527
-
Kirill Shcherbatov authored
Disallowed division by zero in SQL to follow ANSI standard. This also affects some unobvious scenarios when divider indirectly casts to zero like SELECT 'word1' / 'word2'; Closes #2135.
-
- Jul 13, 2018
-
-
Kirill Yukhin authored
-
Kirill Yukhin authored
-
Kirill Yukhin authored
New commit in third_party/libyaml downgrades required cmake version.
-
Ivan Kosenko authored
-
Kirill Shcherbatov authored
If specified PK column modifier refers nonexistent column, lookup by name keeps NULL column pointer unchanged that should be accounted in assert. Close #3522.
-
Kirill Shcherbatov authored
Closes #2946. @TarantoolBot document Title: fixed module reload There was a bug in tarantool documentation: https://tarantool.io/en/doc/1.7/book/box/ box_schema/#lua-function.box.schema.func.reload Now it is allowed to reload all functions in loadable module via one method. Legacy method including finction name is forbidden. box.schema.func.reload("utils") -- ok since now box.schema.func.reload("utils.func1") -- forbidden since now Global reload is still unsupported because it seems to be useless. box.schema.func.reload() -- invalid!
-
- Jul 12, 2018
-
-
Kirill Yukhin authored
-
Kirill Yukhin authored
-
Kirill Shcherbatov authored
Need to update tests as with fixup in upstrem commit baf636a74b4b6d055d93e2d01366d6097eb82d90 Author: Tina Müller <cpan2@tinita.de> Date: Thu Jun 14 19:27:04 2018 +0200 The closing single quote needs to be indented... if it's on its own line. Closes #3275.
-
Kirill Yukhin authored
Closes #3275.
-
Kirill Yukhin authored
-
Kirill Yukhin authored
-
Vladislav Shpilevoy authored
Found by @ImeevMA
-
- Jul 11, 2018
-
-
Vladimir Davydov authored
- Factor out local_recovery() from box_cfg_xc(). Make it setup replication and handle local recovery and hot standby cases. - Move replication setup in case of initial bootstrap from box_cfg_xc() to bootstrap() to make bootstrap() consistent with local_recovery(). - Move initial snapshot creation from bootstrap() to bootsrap_master() and bootstrap_from_master(). Needed for #461
-
Vladimir Davydov authored
box_sync_replication() can now be called before recovery, right after box_listen(). This is a step toward detecting if the instance fell too much behind its peers in the cluster and so needs to be rebootstrapped. Needed for #461
-
Vladimir Davydov authored
In order to find out if the current instance fell too much behind its peers in the cluster and so needs to be re-bootstrapped we need to connect it to remote peers before proceeding to local recovery. The problem is box.cfg.replication may have an entry corresponding to the instance itself so before connecting we have to start listening to incoming connections. So this patch moves the call to box_listen() before recoery is started unless the instance in hot standby mode. It also folds box_bind() into box_listen() as it is no longer needed as a separate function. Needed for #461
-
Vladimir Davydov authored
In order to find out if the current instance fell too much behind its peers in the cluster and so needs to be rebootstrapped, we need to know its vclock before we start local recovery. To do that, let's scan the most recent xlog. In future, we can optimize that by either storing end vclock in xlog eof marker or by making a new xlog on server stop. Needed for #461
-
Vladimir Davydov authored
Introduce vclock_is_set() helper and use it on xlog_meta::prev_vclock instead. Follow-up ac90b498 ("xlog: store prev vclock in xlog header").
-
Vladislav Shpilevoy authored
This opcode was used when Vdbe had to store key_def in P4 for OP_OpenRead/Write, so P4 was occupied and OP_LoadPtr was used to store space pointer in another opcode. But now P4 is free for OpenRead/Write and space pointer can be stored here. Alongside, some useless key_def duplications are removed.
-
Kirill Shcherbatov authored
Made vdbe_emit_open_cursor calls consistent: now it uses index id everywhere. This required to change a way to detect that VDBE has openned Read cursor to specified table in vdbe_has_table_read to write result of insert in temp table if required.
-
Kirill Shcherbatov authored
As sqlite3NestedParse became totaly useless, let's remove unreacheble code and all mentioning. Resolves #3496.
-
Kirill Shcherbatov authored
Now we manually generate AST structures to drop outdated stats from _sql_stat1 and _sql_stat4 spaces instead of starting sqlite3NestedParse. This function becomes totally useless and could be removed. Part of #3496.
-
- Jul 10, 2018
-
-
Konstantin Osipov authored
-
Konstantin Osipov authored
-
Vladimir Davydov authored
Store replication group id in vylog and ignore spaces whose group_id equals GROUP_LOCAL when relaying initial join rows. Folow-up #3443
-
Vladimir Davydov authored
Follow-up #3443
-
Vladimir Davydov authored
Replica local spaces can't cause replication conflicts so we don't really need to respect box.cfg.read_only for them (they are similar to temporary spaces in this regard). Follow-up #3443
-
Konstantin Belyavskiy authored
Next checkpoint time is set by the formula: period = self.checkpoint_interval + offset, where offset is defined as follow: offset = random % self.checkpoint_interval So offset must be calculated again if at least the new interval is less than the old one. Closes #3370
-