Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-33289

INTERVAL partitioning by system time does not work close to the end of timestamp range

Details

    Description

      A system-time partition for the last interval in the timestamp range cannot be created – that is, partitioning by system time interval 1 year won't work in the year 2038, by system time interval 10 year won't work starting from the year 2028, etc.
      If a partition is created explicitly, the DDL fails; if the table is auto-partitioned, the DML fails (or, on debug builds, an assertion failure occurs).

      10.4 87a5d16911bb94d383480fdd49e20876ed1400f2

      MariaDB [test]> set timestamp= unix_timestamp('2024-01-21 00:00:00');
      Query OK, 0 rows affected (0.000 sec)
       
      MariaDB [test]> create table t (a int) with system versioning
          -> partition by system_time interval 10 year (
          ->   partition p1 history, partition p2 history, partition pn current
          -> );
      ERROR 1690 (22003): TIMESTAMP value is out of range in 'INTERVAL'
      

      --source include/have_partition.inc
       
      set timestamp= unix_timestamp('2024-01-21 00:00:00');
      create or replace table t (a int) with system versioning
      partition by system_time interval 10 year auto;
      insert into t values (1);
      set timestamp= unix_timestamp('2035-01-21 00:00:00');
      update t set a = 2;
      

      10.11 9a7deb1c36f9ed08a1ce48e7fd635b45c721dcd6 non-debug

      mysqltest: At line 8: query 'update t set a = 2' failed: ER_DATA_OUT_OF_RANGE (1690): TIMESTAMP value is out of range in 'INTERVAL'
      

      10.11 d0c80c211c1fe3370b68be540bb9113028c6746f debug

      mariadbd: /data/bld/10.11-asan/sql/sql_base.cc:994: void close_thread_table(THD*, TABLE**): Assertion `thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED) || thd->mdl_context.is_lock_warrantee(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED)' failed.
      240121 21:43:33 [ERROR] mysqld got signal 6 ;
       
      #9  0x00007fc8dbc53e32 in __GI___assert_fail (assertion=0x5604c766dfa0 "thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED) || thd->mdl_context.is_lock_warrantee(MDL_key::TABLE, table->s->db.str, table->s->table_name.str,"..., file=0x5604c766d140 "/data/bld/10.11-asan/sql/sql_base.cc", line=994, function=0x5604c766df00 "void close_thread_table(THD*, TABLE**)") at ./assert/assert.c:101
      #10 0x00005604c54c4d7d in close_thread_table (thd=0x62c0000b0218, table_ptr=0x62c0000b0310) at /data/bld/10.11-asan/sql/sql_base.cc:994
      #11 0x00005604c54c4591 in close_thread_tables (thd=0x62c0000b0218) at /data/bld/10.11-asan/sql/sql_base.cc:972
      #12 0x00005604c54c374a in close_thread_tables_for_query (thd=0x62c0000b0218) at /data/bld/10.11-asan/sql/sql_base.cc:793
      #13 0x00005604c5693a8d in mysql_execute_command (thd=0x62c0000b0218, is_called_from_prepared_stmt=false) at /data/bld/10.11-asan/sql/sql_parse.cc:6141
      #14 0x00005604c56a0357 in mysql_parse (thd=0x62c0000b0218, rawbuf=0x6290000e6238 "update t set a = 2", length=18, parser_state=0x7fc8d30ef9e0) at /data/bld/10.11-asan/sql/sql_parse.cc:8080
      #15 0x00005604c5675fe9 in dispatch_command (command=COM_QUERY, thd=0x62c0000b0218, packet=0x629000249219 "update t set a = 2", packet_length=18, blocking=true) at /data/bld/10.11-asan/sql/sql_parse.cc:1894
      #16 0x00005604c5672d16 in do_command (thd=0x62c0000b0218, blocking=true) at /data/bld/10.11-asan/sql/sql_parse.cc:1407
      #17 0x00005604c5b2da87 in do_handle_one_connection (connect=0x608000002eb8, put_in_cache=true) at /data/bld/10.11-asan/sql/sql_connect.cc:1415
      #18 0x00005604c5b2d448 in handle_one_connection (arg=0x608000002e38) at /data/bld/10.11-asan/sql/sql_connect.cc:1317
      #19 0x00005604c671bfe6 in pfs_spawn_thread (arg=0x617000005b98) at /data/bld/10.11-asan/storage/perfschema/pfs.cc:2201
      #20 0x00007fc8dbca8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #21 0x00007fc8dbd2861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      After MDEV-32188 (make TIMESTAMP use whole 32-bit unsigned range) the range limit will be in the year 2106, but otherwise the same problem.

      Attachments

        Activity

          No workflow transitions have been executed yet.

          People

            midenok Aleksey Midenkov
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.