diff options
author | Nikita Malyavin <nikitamalyavin@gmail.com> | 2019-11-26 19:22:04 +1000 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2020-03-31 17:42:34 +0200 |
commit | 259fb1cbed4470636ff35df83e1c4ca966bb8159 (patch) | |
tree | ca82142d15f878ea127f8dbde783cb91a1e13652 /sql/unireg.h | |
parent | 0515577d128318e1b62511846d88d0c56226168d (diff) | |
download | mariadb-git-259fb1cbed4470636ff35df83e1c4ca966bb8159.tar.gz |
MDEV-16978 Application-time periods: WITHOUT OVERLAPS
* The overlaps check is implemented on a handler level per row command.
It creates a separate cursor (actually, another handler instance) and
caches it inside the original handler, when ha_update_row or
ha_insert_row is issued. Cursor closes on unlocking the handler.
* Containing the same key in index means unique constraint violation
even in usual terms. So we fetch left and right neighbours and check
that they have same key prefix, excluding from the key only the period part.
If it doesnt match, then there's no such neighbour, and the check passes.
Otherwise, we check if this neighbour intersects with the considered key.
* The check does not introduce new error and fails with ER_DUPP_KEY error.
This might break REPLACE workflow and should be fixed separately
Diffstat (limited to 'sql/unireg.h')
-rw-r--r-- | sql/unireg.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/unireg.h b/sql/unireg.h index 419fbc4bd80..873d6f681fc 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -177,7 +177,8 @@ enum extra2_frm_value_type { EXTRA2_ENGINE_TABLEOPTS=128, EXTRA2_FIELD_FLAGS=129, - EXTRA2_FIELD_DATA_TYPE_INFO=130 + EXTRA2_FIELD_DATA_TYPE_INFO=130, + EXTRA2_PERIOD_WITHOUT_OVERLAPS=131, }; enum extra2_field_flags { |