• Nikita Malyavin's avatar
    MDEV-15951 system versioning by trx id doesn't work with partitioning · e6230e84
    Nikita Malyavin authored
    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()`
    e6230e84
handler.h 171 KB