← Back to team overview

maria-developers team mailing list archive

Re: 494c0448c87: MDEV-15951 system versioning by trx id doesn't work with partitioning

 

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@xxxxxxxxx>
> committer: Nikita Malyavin <nikitamalyavin@xxxxxxxxx>
> 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@xxxxxxxxxxx