Aleksey Midenkov
3f4d03b0dd
Tests: partitioning cases for duplicate bugs
...
MDEV-15191 Assertion `bit < (map)->n_bits' failed in bitmap_is_set
upon INSERT
MDEV-15036 Assertion `!is_set() || (m_status == DA_OK_BULK
&& is_bulk_op())' in Diagnostics_area::set_ok_status or unexpected
ER_RANGE_NOT_INCREASING_ERROR
2018-02-24 00:50:56 +01:00
Eugene Kosov
68c994436a
MDEV-15168 Unexpected ER_VERS_ENGINE_UNSUPPORTED upon dropping versioning on a partitioned table
...
Vers_parse_info::fix_alter_info(): disallow DROP SYSTEM VERSIONING
for system_time partitioned tables.
2018-02-24 00:50:56 +01:00
Sergei Golubchik
f685604aaa
MDEV-15103 Assertion in ha_partition::part_records() for updating VIEW
...
add a test case
2018-02-24 00:50:56 +01:00
Sergei Golubchik
62b5427394
cannot rotate both by INTERVAL and LIMIT
2018-02-24 00:50:56 +01:00
Sergei Golubchik
dfb6f96eaf
MDEV-15190 Bad error for non-versioned table PARTITION BY SYSTEM_TIME
2018-02-24 00:50:56 +01:00
Sergei Golubchik
e36c5ec0a5
PARTITION BY SYSTEM_TIME INTERVAL ...
...
Lots of changes:
* calculate the current history partition in ::external_lock(),
not in ::write_row() or ::update_row()
* remove dynamically collected per-partition row_end stats
* no full table scan in open_table_from_share to calculate these
stats, no manual MDL/thr_locks in open_table_from_share
* no shared stats in TABLE_SHARE = no mutexes or condition waits when
calculating current history partition
* always compare timestamps, don't convert them to MYSQL_TIME
(avoid DST ambiguity, and it's faster too)
* correct interval handling, 1 month = 1 month, not 30 * 24 * 3600 seconds
* save/restore first partition start time, and count intervals from there
* only allow to drop first partitions if INTERVAL
* when adding new history partitions, split the data in the last history
parition, if it was overflowed
* show partition boundaries in INFORMATION_SCHEMA.PARTITIONS
2018-02-23 19:17:48 +01:00
Sergei Golubchik
f38ef43013
cleanup: remove *.opt files from the versioning suite
...
use include/have_xxx.inc when some feature needs to be present
(because --xxx in the opt file will fail if the xxx is not compiled in)
set variables in the test, not on the command line, to avoid unnecessary
server restarts (they're must slower than SET).
2018-02-23 15:33:23 +01:00
Aleksey Midenkov
df0e1817c7
Vers SQL: partition rotation by INTERVAL fix
...
Update partition stats on ha_partition::write_row()
2018-02-23 15:33:22 +01:00
Sergei Golubchik
6a8cf407d2
fix tests on windows
2018-01-13 02:01:35 +01:00
Aleksey Midenkov
93e8ee4ae1
MDEV-14923 Assertion upon INSERT into locked versioned partitioned table
2018-01-13 01:53:12 +01:00
Sergei Golubchik
b85efdc3af
rename system_time columns
...
sys_trx_start -> row_start
sys_trx_end -> row_end
2018-01-09 15:49:07 +03:00
Eugene Kosov
5dddbafa4e
MDEV-14821 Assertion !is_set() || (m_status == DA_OK_BULK && is_bulk_op()) failed in Diagnostics_area::set_ok_status
2018-01-08 13:32:02 +03:00
Aleksey Midenkov
912769b7dc
SQL: lower priority of warning in vers_part_rotate() for ALTER [ fixes #446 ]
2018-01-06 11:56:51 +03:00
Aleksey Midenkov
d1e4c5d13e
MDEV-14748 Assertion in ha_myisammrg::attach_children() [ fixes #434 ]
2017-12-29 00:23:20 +03:00
Aleksey Midenkov
11c6882741
MDEV-14747 ALTER PARTITION BY SYSTEM_TIME after LOCK TABLES
2017-12-26 15:25:39 +03:00
Aleksey Midenkov
ea49441c41
Partition: uninitialized vers_info fix
2017-12-22 16:40:09 +03:00
Aleksey Midenkov
57f827cdd6
MDEV-14741 Assertion '(trx)->start_file == 0' failed
...
in row_truncate_table_for_mysql()
2017-12-22 14:52:17 +03:00
Aleksey Midenkov
1e8eae40ce
MDEV-14740 Locking assertion for system_time partitioning
...
Assertion `thd->locked_tables_mode <= LTM_LOCK_TABLES ||
!thd->lex->requires_prelocking()' failed in lock_tables().
2017-12-22 12:51:48 +03:00
Aleksey Midenkov
7e39f70044
MDEV-14722 Partition: assertion in ha_commit_trans() for sub-statement
2017-12-21 16:15:56 +03:00
Aleksey Midenkov
04bed58acf
SQL: partitioning CREATE, ALTER fixes
...
MDEV-14688 Assertion `tab_part_info->part_type == LIST_PARTITION' failed in prep_alter_part_table
MDEV-14673 Assertion `part_elem->type() == partition_element::AS_OF_NOW' failed in check_partition_info
2017-12-18 22:17:53 +03:00
Aleksey Midenkov
b55a149194
Timestamp-based versioning for InnoDB [ closes #209 ]
...
* Removed integer_fields check
* Reworked Vers_parse_info::check_sys_fields()
* Misc renames
* versioned as vers_sys_type_t
* Removed versioned_by_sql(), versioned_by_engine()
versioned() works as before;
versioned(VERS_TIMESTAMP) is versioned_by_sql();
versioned(VERS_TRX_ID) is versioned_by_engine().
* create_tmp_table() fix
* Foreign constraints for timestamp-based
* Range auto-specifier fix
* SQL: 1-row partition rotation fix [fixes #260 ]
* Fix 'drop system versioning, algorithm=inplace'
2017-12-18 19:03:51 +03:00
Aleksey Midenkov
4624e565f3
System Versioning 1.0 pre6
...
Merge remote-tracking branch 'mariadb/bb-10.3-temporal-serg' into trunk
2017-12-15 18:12:18 +03:00
Eugene Kosov
0e0f1126e6
MDEV-14649 Assertion `t->mysql_col_len == 8' failed in row_insert_for_mysql
...
SQL: add check for internal partition table type
Also fixes MDEV-14654
2017-12-15 16:35:53 +03:00
Sergei Golubchik
18405e5fd9
Partitioning syntax for versioning
...
partition by system_time (
partition p0 history,
partition pn current
)
2017-12-14 20:19:14 +01:00
Aleksey Midenkov
27187443ef
MDEV-14650 Assertion 0 failed in TABLE::vers_update_fields [ fixes #402 ]
...
SQL: fixed selecion of handlerton by respecting partitioning
2017-12-14 19:45:11 +03:00
Sergei Golubchik
f149013393
rename versioning_* variables
2017-12-14 11:31:44 +01:00
Aleksey Midenkov
eab471260b
Paritioning: better error for disabled IB engine
2017-12-13 23:51:30 +03:00
Sergei Golubchik
e77080c7d5
if a table is partitioned by system_time, its partitions are not versioned
...
they store history and the history does not have history
2017-12-13 21:44:30 +01:00
Eugene Kosov
c66a20b494
SQL: better check for partition engine [ #366 ]
...
Cleaned up by @midenok.
2017-12-12 22:01:39 +03:00
Eugene Kosov
8c9c302016
SQL: fix implicit sys fields for implicit engine of partitioned table [ #366 ]
2017-12-08 16:26:18 +03:00
Sergei Golubchik
903be4e6be
remove my_error_as and one unnecessary error message
2017-12-08 16:26:16 +03:00
Sergei Golubchik
ea1ccfa500
SQL: regression fix: make NOW a valid identifier again [ #363 ]
...
* again, as in 10.2, NOW is a keyword only if followed by parentheses
* use AS OF CURRENT_TIMESTAMP or AS OF NOW()
* AS OF CURRENT_TIMESTAMP and AS OF NOW() mean AS OF NOW(6),
not AS OF NOW(0), (same behavior as in a DEFAULT clause)
2017-12-08 16:24:56 +03:00
Aleksey Midenkov
9980886cab
Revert "SQL: 1-row partition rotation fix [ fixes #260 ]"
...
Related to IB partitioning only.
This reverts commit 7e764ae188 .
2017-11-17 11:25:52 +03:00
Aleksey Midenkov
7e764ae188
SQL: 1-row partition rotation fix [ fixes #260 ]
2017-09-13 10:57:46 +03:00
Aleksey Midenkov
904b69cd9e
SQL: partitioning misc fixes [ closes #242 ]
...
* cleanup: *never* use assert(A && B)
* vers_setup_1() revisited
* vers_setup_2() renamed
* partition_element::type removed
* Copy ctor instead of memcpy()
* Handle return value from check_range_constants()
* Malloc error fix
* error, style, misc fixes
2017-09-07 15:49:11 +03:00
Aleksey Midenkov
88ccf759c1
SQL: pruning, derived, view fixes [ fixes #244 ]
2017-09-01 19:05:20 +03:00
Eugene Kosov
99baeaa951
SQL: MAX microseconds for current system rows [ fixes #245 ]
2017-08-18 14:29:22 +03:00
Aleksey Midenkov
53370de103
IB: partition-wise ha_innopart::rnd_init() [ fixes #208 ]
2017-08-04 17:17:28 +03:00
Aleksey Midenkov
4b0f1284ee
SQL: revisit error messages [ closes #217 ]
2017-07-03 14:04:34 +03:00
Eugene Kosov
2442a81eff
IB: read lock on partitioned table read [ closes #200 ]
...
Closes #204
2017-06-22 18:37:49 +03:00
Aleksey Midenkov
27a6ef0a9e
IB,SQL: Innopart UPDATE [ fixes #178 ]
2017-05-05 20:36:37 +03:00
Aleksey Midenkov
fc7da4dd4f
IB, SQL: InnoDB partitioning [ closes #118 ]
...
* native InnoDB partitioning for BY SYSTEM_TIME partitions.
2017-05-05 20:36:28 +03:00
Aleksey Midenkov
26a3ff0a22
SQL: (0.6) Pruning for VERSIONING partitions [ closes #97 ]
...
* based on RANGE pruning by COLUMNS (sys_trx_end) condition
* removed DEFAULT; AS OF NOW is always last; current VERSIONING as last non-empty (or first empty)
* Min/Max stats in TABLE_SHARE
* ALTER TABLE ADD PARTITION adds before AS OF NOW partition
2017-05-05 20:36:25 +03:00
Aleksey Midenkov
e851c140f4
SQL: (0.5) Versioned partitions [ closes #77 ]
...
* one `AS OF NOW`, multiple `VERSIONING` partitions;
* rotation of `VERSIONING` partitions by record count, time period;
* rotation is multi-threaded;
* conventional subpartitions as bottom level for versioned partitions;
* `DEFAULT` keyword selects first `VERSIONING` partition;
* ALTER TABLE ADD/DROP partition;
* REBUILD PARTITION basic operation.
2017-05-05 20:36:21 +03:00