Hi, Nikita! That's good, thanks! It's always nice to see a fix that removes more code than it adds :) But I'll reformulate the error message a bit, "Transactional system versioned tables" also means InnoDB system versioned by timestamp. I'll clarify (somehow) that it means versioned by trx_id, and push. On Mar 26, Nikita Malyavin wrote:
revision-id: 494c0448c87 (mariadb-10.3.12-65-g494c0448c87) parent(s): 4946eb7b543 author: Nikita Malyavin <nikitamalyavin@gmail.com> committer: Nikita Malyavin <nikitamalyavin@gmail.com> timestamp: 2019-02-28 19:29:12 +1000 message:
MDEV-15951 system versioning by trx id doesn't work with partitioning
Fix partitioning for trx_id-versioned tables. `partition by hash`, `range` and others now work. `partition by system_time` is forbidden. Currently we cannot use row_start and row_end in `partition by`, because insertion of versioned field is done by engine's handler, as well as row_start/row_end's value set up, which is a transaction id -- so it's also forbidden.
The drawback is that it's now impossible to use `partition by key()` without parameters for such tables, because it references row_start and row_end implicitly.
* add handler::vers_can_native() * drop Table_scope_and_contents_source_st::vers_native() * drop partition_element::find_engine_flag as unused * forbid versioning partitioning for trx_id as not supported * adopt vers tests for trx_id partitioning * forbid any row_end referencing in `partition by` clauses, including implicit `by key()`
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 9112795b754..dff12ef0a97 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -7907,8 +7907,8 @@ ER_UNUSED_24 ER_VERS_TEMPORARY eng "TEMPORARY tables do not support system versioning"
-ER_VERS_NOT_SUPPORTED - eng "%s is not supported for %s system-versioned tables" +ER_VERS_TRX_PART_HISTORIC_ROW_NOT_SUPPORTED + eng "Transactional system versioned tables do not support partitioning by ROW START or ROW END" ER_INDEX_FILE_FULL eng "The index file for table '%-.192s' is full"
Regards, Sergei Chief Architect MariaDB and security@mariadb.org