1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-18 10:22:14 +03:00
Commit Graph

7647 Commits

Author SHA1 Message Date
Alexander Barkov
314350a722 Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3 2017-05-07 23:51:18 +04:00
Alexander Barkov
cc694792c9 MDEV-12717 Change Item_equal to operate Type_handler rather than Item_result 2017-05-07 01:02:37 +04:00
Alexander Barkov
aea54a11a6 MDEV-12716 Change Value_source::Context to operate Type_handler rather than Item_result 2017-05-06 23:06:18 +04:00
Aleksey Midenkov
7e0ff13d7a SQL: derived fixes [related to #185] 2017-05-05 20:36:39 +03:00
Aleksey Midenkov
8a11f9b243 SQL: VIEW fix [related to #185] 2017-05-05 20:36:39 +03:00
Aleksey Midenkov
7153ff85a1 SQL: derived tables improvements [closes #185] 2017-05-05 20:36:38 +03:00
Aleksey Midenkov
122ffa2211 SQL(misc): Query_arena_stmt RAII 2017-05-05 20:36:37 +03:00
Aleksey Midenkov
1e8a81dea6 SQL: CREATE VIEW and misc improvements [fixes #183] 2017-05-05 20:36:37 +03:00
kevg
7d2ed77e31 SQL: SIGSEGV in create_tmp_table() [fixes #179]
tests are in main,rpl suites
2017-05-05 20:36:37 +03:00
kevg
ecc6cd95c4 SQL: Default 'simple' algorithm for InnoDB 'AS OF' [closes #175] 2017-05-05 20:36:36 +03:00
kevg
d64702d43a SQL: different results when querying a VIEW from PREPARED STATEMENT and without it [fixes #176] 2017-05-05 20:36:35 +03:00
kevg
ecd18bc099 SQL: allow FOR SYSTEM_TIME BEFORE for SELECT queries [closes #170] 2017-05-05 20:36:35 +03:00
Aleksey Midenkov
9e9af76eaf SQL: vers_current_time refactoring [closes #117]
* session sysvars;
* moved value parsing to set variable phase;
* renamed 'temporal_current_timestamp' to 'vers_current_time'.
2017-05-05 20:36:34 +03:00
Aleksey Midenkov
67cd92b6f4 SQL, IB: Copy history via CREATE .. SELECT [closes #157, #152] 2017-05-05 20:36:33 +03:00
kevg
14f007f907 SQL: versioning in embedded JOINs [fixes #160] 2017-05-05 20:36:33 +03:00
kevg
21e8b22f53 Misc: vers_select_conds_t::init_from_sysvar() 2017-05-05 20:36:32 +03:00
kevg
352d83569b SQL: versioning for tmp HEAP tables created from IB tables [closes #158] 2017-05-05 20:36:32 +03:00
kevg
92c7a87119 Misc: vers_setup_select() Item_field ctor fix
Related to #150
2017-05-05 20:36:31 +03:00
kevg
9ea02899f8 SQL: nested equi-join for versioned table [fixes #150] 2017-05-05 20:36:31 +03:00
kevg
d85e7a5e01 SQL: NATUAL JOIN on view + table [fixes #148] 2017-05-05 20:36:30 +03:00
kevg
b8bfc06b26 SQL, Tests: temporal_current_timestamp for setting default AS OF timestamp [closes #117] 2017-05-05 20:36:28 +03:00
kevg
bcc8ba78bc SQL, Tests: versioning for nested queries and CTE [closes #74] 2017-05-05 20:36:27 +03:00
kevg
7aa3ebdd18 SQL, Tests: FOR SYSTEM_TIME for VIEWs [closes #98] 2017-05-05 20:36:27 +03:00
kevg
e069de7d9d SQL: TRUNCATE FOR SYSTEM_TIME BEFORE [closes #111] 2017-05-05 20:36:25 +03:00
Aleksey Midenkov
3a64d55aed Parser, SQL: table-specific FOR SYSTEM_TIME [closes #116]
* Syntax sugar: query-global QUERY FOR SYSTEM_TIME
2017-05-05 20:36:25 +03:00
kevg
c9e4ac4b72 0.6: truncate history feature [closes #96] 2017-05-05 20:36:24 +03:00
Aleksey Midenkov
ea60760e47 SQL: missed FOR SYSTEM_TIME ALL for FOR_SYSTEM_TIME_UNSPECIFIED
[fixes #105]
2017-05-05 20:36:23 +03:00
Aleksey Midenkov
27d9e762a9 SQL: prohibit write-locking of historic rows [fixes #102] 2017-05-05 20:36:23 +03:00
Aleksey Midenkov
412dd1e1f3 SQL: FOR SYSTEM_TIME support in VIEW expression [fixes #99] 2017-05-05 20:36:23 +03:00
kevg
dc4ef66fee SQL: optimize FOR SYSTEM_TIME ALL queries [closes #85] 2017-05-05 20:36:21 +03:00
Aleksey Midenkov
695c5aabad SQL: error on FOR SYSTEM_TIME without any versioned tables
[fixes #88]
2017-05-05 20:36:20 +03:00
Aleksey Midenkov
dd3099a00d SQL: unsupported engine fix for VTQ funcs 2017-05-05 20:36:19 +03:00
Aleksey Midenkov
d54d36c45e IB, SQL: (0.4) COMMIT_ID-based ordering of transactions
IB:
* removed CONCURR_TRX from VTQ;
* new fields in VTQ: COMMIT_ID, ISO_LEVEL.

SQL:
* renamed BEGIN_TS, COMMIT_TS to VTQ_BEGIN_TS, VTQ_COMMIT_TS;
* new functions: VTQ_COMMIT_ID, VTQ_ISO_LEVEL, VTQ_TRX_ID, VTQ_TRX_SEES, VTQ_TRX_SEES_EQ;
* versioned SELECT for IB uses VTQ_TRX_SEES, VTQ_TRX_SEES_EQ.

Closes #71
2017-05-05 20:36:17 +03:00
Aleksey Midenkov
6d89a4a49b Parser, SQL: (0.4) TRANSACTION support in queries
Syntax extension: TIMESTAMP/TRANSACTION keyword can be used before FROM ... TO, BETWEEN ... AND.
Example:
    SELECT * FROM t1 FOR SYSTEM_TIME TIMESTAMP FROM '1-1-1' TO NOW();

Closes #27
2017-05-05 20:36:15 +03:00
Aleksey Midenkov
01c9d1c97f SQL: SP idempotency fix
Fixes #52
2017-05-05 20:36:13 +03:00
Aleksey Midenkov
5cf3dd79fa SQL: JOIN + WHERE in SP 2017-05-05 20:36:13 +03:00
Aleksey Midenkov
6ccae7369b SQL: fixed LEFT JOIN, RIGHT JOIN 2017-05-05 20:36:11 +03:00
Aleksey Midenkov
2db17e6624 Parser: versioned JOIN fix
Moved opt_for_system_time_clause from table identifier (which binds
it to single table) to table expression.
2017-05-05 20:36:10 +03:00
Aleksey Midenkov
53a892fcfd IB: 0.2 part IV
* BEGIN_TS(), COMMIT_TS() SQL functions;
* VTQ instead of packed stores secs + usecs like my_timestamp_to_binary() does;
* versioned SELECT to IB is translated with COMMIT_TS();
* SQL fixes:
  - FOR_SYSTEM_TIME_UNSPECIFIED condition compares to TIMESTAMP_MAX_VALUE;
  - segfault fix #36: multiple execute of prepared stmt;
  - different tables to same stored procedure fix (#39)
* Fixes of previous parts: ON DUPLICATE KEY, other misc fixes.
2017-05-05 20:36:10 +03:00
Aleksey Midenkov
a72259353a Cleanup: garbage hunk 2017-05-05 20:36:09 +03:00
Aleksey Midenkov
1ec7dbe176 IB: 0.2 part III
* versioned DML: INSERT, UPDATE, DELETE;
* general refactoring and fixes.

Warning: breaks 'insert' and 'update' tests since they require part IV.
2017-05-05 20:36:08 +03:00
Daniel Fiala
be6f2d302c 0.1: SQL-level System Versioning 2017-05-05 20:35:08 +03:00
Alexander Barkov
ac53b49b1b Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext 2017-05-05 16:12:54 +04:00
Igor Babaev
15f9931f6d Fixed the bug mdev-12673.
This patch corrects the fix for the bug mdev-10693.
It is critical for the function get_best_combination() not to call
create_ref_for_key() for constant tables.
This bug could manifest itself only in multi-table subqueries where
one of the tables is accessed by a constant primary key.
2017-05-04 22:45:32 -07:00
Igor Babaev
ce8ee7d90b Fixed the bug mdev-11990.
The usage of windows functions when all tables were optimized away
by min/max optimization were not supported. As result a result,
the queries that used window functions with min/max aggregation
over the whole table returned wrong result sets.
The patch fixed this problem.
2017-05-03 13:50:35 -07:00
Alexander Barkov
280866d38d Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3 2017-05-02 13:52:45 +04:00
Sergei Golubchik
e74f2e2b86 Merge branch '10.0' 10.1 2017-04-28 20:19:32 +02:00
Alexander Barkov
441349aa06 MDEV-12588 Add Type_handler::type_handler_for_tmp_table() and Type_handler::type_handler_for_union()
1. Implementing the task according to the description:

a. Adding Type_handler::type_handler_for_tmp_table().
b. Adding Type_handler::type_handler_for_union_table.
c. Adding helper methods Type_handler::varstring_type_handler(const Item*),
   Type_handler::blob_type_handler(const Item*)
d. Removing Item::make_string_field() and
   Item_func_group_concat::make_string_field().
   They are not needed any more.
e. Simplifying Item::tmp_table_field_from_field_type() to just two lines.
f. Renaming Item_type_holder::make_field_by_type() and implementing
   virtual Item_type_holder::create_tmp_field() instead.
   The new implementation is also as simple as two lines.
g. Adding a new virtual method Type_all_attributes::get_typelib(),
   to access to TYPELIB definitions for ENUM and SET columns.
h. Simplifying the code branch for TIME_RESULT, DECIMAL_RESULT, STRING_RESULT
   in Item::create_tmp_field(). It's now just one line.
i. Implementing Type_handler_enum::make_table_field() and
   Type_handler_set::make_table_field().

2. Code simplification in Field_str constructor calls.

a. Changing the "CHARSET_INFO *cs" argument in constuctors for Field_str
   and its descendants to "const DTCollation &collation". This is to
   avoid two step initialization:
   - setting Field_str::derivation and Field_str::repertoire to the
     default values first
   - then resetting them using:
     set_derivation(item->derivation, item->repertoire).

b. Removing Field::set_derivation()

c. Adding a new constructor DTCollation(CHARSET_INFO *cs),
   for the old code compatibility.

3. Changes in test results

As a side effect some test results have changed, because
in the old version Item::make_string_field() converted
TINYBLOB to VARCHAR(255). Now TINYBLOB is preserved.

a. sp-row.result
   This query:
     CREATE TABLE t1 AS SELECT tinyblob_sp_variable;
   Now preserves TINYBLOB as the data type.
   Before the patch a VARCHAR(255) was created.

b. gis-debug.result
   This is a debug test, to make sure that + and - operators
   are commutative and non-commutative correspondingly.
   The exact data type is not really important.
   (But anyway, it now chooses a better data type that fits the result)
2017-04-27 14:37:27 +04:00
Oleksandr Byelkin
49552cf1f7 Merge branch '5.5' into bb-10.0-merge-5.5 2017-04-25 16:30:39 +02:00
Igor Babaev
2e7ba70a94 Fixed the bug mdev-10693.
The code that chooses between materialization of a non-correlated
IN subquery and its transformation into an EXISTS correlated
subquery assumes that the execution plan for the outer select
has been already built. However it was not always so if subqueries
occurred in the expressions used for ref access to tables of
the outer select. A call of the function create_ref_for_key() in
get_best_combination() could trigger a premature execution of
the above mentioned code when the execution plan structures for
the outer select were not fully built. This could cause a crash
of the server.

The fix postpones the calls of create_ref_for_key() until the
structures for the execution plan is fully built.
2017-04-24 11:46:01 -07:00