[MDEV-23285] mysql.transaction_registry contains default values for the timestamp columns that conflict with NO_ZERO_DATE sql mode Created: 2020-07-24  Updated: 2023-10-06

Status: Confirmed
Project: MariaDB Server
Component/s: Versioned Tables
Affects Version/s: 10.4.13, 10.3, 10.4, 10.5
Fix Version/s: 10.4, 10.5

Type: Bug Priority: Major
Reporter: Vasilis Lourdas Assignee: Aleksey Midenkov
Resolution: Unresolved Votes: 0
Labels: trx-versioning
Environment:

Linux x86-64, kernel 5.4.x


Issue Links:
Relates
relates to MDEV-16226 TRX_ID-based System Versioning refact... Stalled
relates to MDEV-20254 Problems with EMPTY_STRING_IS_NULL an... Closed

 Description   

show create table transaction_registry \G
       Table: transaction_registry
Create Table: CREATE TABLE `transaction_registry` (
  `transaction_id` bigint(20) unsigned NOT NULL,
  `commit_id` bigint(20) unsigned NOT NULL,
  `begin_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
  `commit_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
  `isolation_level` enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE') COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`transaction_id`),
  UNIQUE KEY `commit_id` (`commit_id`),
  KEY `begin_timestamp` (`begin_timestamp`),
  KEY `commit_timestamp` (`commit_timestamp`,`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0
1 row in set (0.000 sec)
 
\s
--------------
mysql  Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) using readline 8.0
 
Connection id:		2570
Current database:	mysql
Current user:		root@localhost
SSL:			Not in use
Current pager:		/usr/bin/less
Using outfile:		''
Using delimiter:	;
Server:			MariaDB
Server version:		10.4.13-MariaDB Source distribution
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8mb4
Db     characterset:	utf8mb4
Client characterset:	utf8mb4
Conn.  characterset:	utf8mb4
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			12 hours 41 min 16 sec

While the above seems normal, if you have NO_ZERO_DATE sql mode enabled, when you analyze the mysql database, it fails with a 'invalid default value for column ....' error and stops.



 Comments   
Comment by Elena Stepanova [ 2020-08-05 ]

Thanks for the report.

--source include/have_innodb.inc
set sql_mode='NO_ZERO_DATE';
optimize table mysql.transaction_registry;

10.3 1656ea28

optimize table mysql.transaction_registry;
Table	Op	Msg_type	Msg_text
mysql.transaction_registry	optimize	note	Table does not support optimize, doing recreate + analyze instead
mysql.transaction_registry	optimize	error	Invalid default value for 'begin_timestamp'
mysql.transaction_registry	optimize	status	Operation failed
Warnings:
Warning	1265	Data truncated for column 'begin_timestamp' at row 1
Error	1067	Invalid default value for 'begin_timestamp'

Comment by Vasilis Lourdas [ 2021-10-01 ]

Any news on this one?

Generated at Thu Feb 08 09:21:15 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.