Использование DateTime в MariaDB 10.3.9 системных версионных таблиц работает для rowStart, но не для rowEnd - PullRequest
0 голосов
/ 04 октября 2018

Я тестирую системные версии таблиц в MariaDB 10.3.9 - но я бы хотел, чтобы версия вышла за 2038-01-19 03:14:07.999999, потому что я предполагаю, что буду еще через 19 лет.Для этого я использую DATETIME(6) вместо TIMESTAMP(6).Это не работает.Генерация AS ROW END выглядит как 0000-00-00 00:00:00.000000.

. В результате я не могу выбрать или изменить текущее состояние таблицы.Это ошибка или мне не хватает какой-либо опции конфигурации, детали реализации, которая делает DATETIME невозможным?

Вот распечатка из тестовой сессии:

MariaDB [tests]> CREATE TABLE dateTimeTest
    -> (
    ->   dtt_id       INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ->   dtt_value    VARCHAR(6)   NOT NULL,
    ->   dtt_rowStart DATETIME(6)           GENERATED ALWAYS AS ROW START,
    ->   dtt_rowEnd   DATETIME(6)           GENERATED ALWAYS AS ROW END,
    ->   PERIOD FOR SYSTEM_TIME(dtt_rowStart, dtt_rowEnd),
    ->   --
    ->   PRIMARY KEY DTT_pk(dtt_id)
    -> ) WITH SYSTEM VERSIONING;
Query OK, 0 rows affected (0.057 sec)

MariaDB [tests]> INSERT INTO dateTimeTest (dtt_value)
    -> VALUES ('valueA'),
    ->        ('valueB');
Query OK, 2 rows affected (0.009 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [tests]> SELECT *
    -> FROM dateTimeTest;
Empty set (0.000 sec)

MariaDB [tests]> SELECT * FROM dateTimeTest FOR SYSTEM_TIME ALL;
+--------+-----------+----------------------------+----------------------------+
| dtt_id | dtt_value | dtt_rowStart               | dtt_rowEnd                 |
+--------+-----------+----------------------------+----------------------------+
|      1 | valueA    | 2018-10-04 20:49:50.763456 | 0000-00-00 00:00:00.000000 |
|      2 | valueB    | 2018-10-04 20:49:50.763456 | 0000-00-00 00:00:00.000000 |
+--------+-----------+----------------------------+----------------------------+
2 rows in set (0.000 sec)

MariaDB [tests]>

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Здесь обсуждается DATETIME и таблицы версий системы.Короче говоря, это намеренно запрещено, и когда-нибудь появится тип данных с более широким диапазоном.https://jira.mariadb.org/browse/MDEV-17448

0 голосов
/ 16 октября 2018

Вы можете быть рядом, но этого не будет.Пройдите со мной через мысленное упражнение ...

19 лет назад MySQL был в версии 3.xx с MyISAM.И Windows работала с версией, которая не будет работать сегодня, если вы не сохранили это старое оборудование.И он имел гораздо меньше 1 ГБ ОЗУ, и резервные копии, вероятно, были на дискетах.(Помните дискеты?) И дисплеем был ЭЛТ, соединенный кабелем VGA.(Когда вы в последний раз видели ЭЛТ?)

Доверяете ли вы чему-нибудь столь старому?Вы могли бы даже заставить это бежать?

Как Вы можете поддержать что-то в течение 19 лет?Вы должны обновить все каждые 5 лет - оборудование, устройства ввода, устройства вывода, память, память, ОС, MySQL и т. Д. И т. Д.

Сдвиг вперед 19лет.

Я утверждаю, что вам нужно будет сделать 4 основных обновления в период с настоящего момента до 2038 года. Решение проблемы Y-2038 будет лишь одной незначительной вещью, с которой придется иметь дело.

Если вам это нужночтобы заглянуть вперед, вы можете, по крайней мере, использовать DATE, пока не возникнет проблема Y10K.Это будет долго после нашей смерти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...