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

Crash in dict_foreign_qualify_index or Assertion `index->magic_n == 76789786' or Assertion `pos < index->n_def' failed in dict_index_get_nth_field

    XMLWordPrintable

    Details

      Description

      The same test case intermittently fails on either of two assertions below. Run with --repeat=N. It fails for me fairly quickly, but it can vary on different builds and machines.
      Alternatively, it can also fail with MDEV-18016 or with MDEV-16654 (on 10.1), so it might be related.

      --source include/have_innodb.inc
       
      CREATE TABLE t1 (
        id int(10) unsigned NOT NULL auto_increment,
        c char(120) NOT NULL default '',
        PRIMARY KEY (id)
      ) ENGINE=InnoDB;
      CREATE TABLE t2 (
        id int(10) unsigned NOT NULL auto_increment,
        pad char(60) NOT NULL default '',
        k int(10) unsigned default '0',
        c char(120) NOT NULL default '',
        PRIMARY KEY (id)
      ) ENGINE=InnoDB;
       
      INSERT INTO t2 (pad,k,c) VALUES ('foo',1,'foo'),('bar',2,'bar');
      INSERT INTO t2 (pad,k,c) SELECT pad, k, c FROM t2;
      INSERT INTO t2 (pad,k,c) SELECT pad, k, c FROM t2;
      INSERT INTO t2 (pad,k,c) SELECT pad, k, c FROM t2;
      INSERT INTO t2 (pad,k,c) SELECT pad, k, c FROM t2;
       
      SET FOREIGN_KEY_CHECKS= OFF ;
      ALTER TABLE t1 ADD CONSTRAINT FOREIGN KEY (c) REFERENCES unknown_table(x);
       
      --connect (con1,localhost,root,,test)
      SET FOREIGN_KEY_CHECKS= OFF ;
      --send
        ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c);
       
      --connection default
      --error 0,ER_CANT_CREATE_TABLE
      CREATE OR REPLACE TABLE t1 (a INT) ENGINE=InnoDB;
       
      # Cleanup
      --connection con1
      --error 0,ER_FK_INCORRECT_OPTION
      --reap
      --disconnect con1
      --connection default
      DROP TABLE IF EXISTS t1, t2;
      

      10.2 0c20b247de0

      mysqld: /data/src/10.2/storage/innobase/include/dict0dict.ic:1065: dict_field_t* dict_index_get_nth_field(const dict_index_t*, ulint): Assertion `index->magic_n == 76789786' failed.
      190108  3:13:08 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f50e1cf6ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x000055d6caa23783 in dict_index_get_nth_field (index=0x7f5088044598, pos=0) at /data/src/10.2/storage/innobase/include/dict0dict.ic:1065
      #9  0x000055d6caa237ff in dict_index_get_nth_col (index=0x7f5088044598, pos=0) at /data/src/10.2/storage/innobase/include/dict0dict.ic:1120
      #10 0x000055d6caa3597b in dict_foreign_qualify_index (table=0x7f508800b9f8, col_names=0x0, columns=0x7f507c01c538, n_cols=1, index=0x7f507c01f058, types_idx=0x7f5088044598, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.2/storage/innobase/dict/dict0dict.cc:6934
      #11 0x000055d6caa2ca8e in dict_foreign_find_index (table=0x7f508800b9f8, col_names=0x0, columns=0x7f507c01c538, n_cols=1, types_idx=0x7f5088044598, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.2/storage/innobase/dict/dict0dict.cc:3364
      #12 0x000055d6ca7b3d8a in innobase_update_foreign_try (ctx=0x7f507c013138, trx=0x7f50d7c023a8, table_name=0x7f508806ad5d "t2") at /data/src/10.2/storage/innobase/handler/handler0alter.cc:7585
      #13 0x000055d6ca7b963e in commit_try_norebuild (ha_alter_info=0x7f50d40f3610, ctx=0x7f507c013138, altered_table=0x7f507c019b10, old_table=0x7f508806bc60, trx=0x7f50d7c023a8, table_name=0x7f508806ad5d "t2") at /data/src/10.2/storage/innobase/handler/handler0alter.cc:8036
      #14 0x000055d6ca7b5718 in ha_innobase::commit_inplace_alter_table (this=0x7f508806c868, altered_table=0x7f507c019b10, ha_alter_info=0x7f50d40f3610, commit=true) at /data/src/10.2/storage/innobase/handler/handler0alter.cc:8668
      #15 0x000055d6ca469acf in handler::ha_commit_inplace_alter_table (this=0x7f508806c868, altered_table=0x7f507c019b10, ha_alter_info=0x7f50d40f3610, commit=true) at /data/src/10.2/sql/handler.cc:4231
      #16 0x000055d6ca2b7792 in mysql_inplace_alter_table (thd=0x7f507c000b00, table_list=0x7f507c0111a0, table=0x7f508806bc60, altered_table=0x7f507c019b10, ha_alter_info=0x7f50d40f3610, inplace_supported=HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, target_mdl_request=0x7f50d40f3680, alter_ctx=0x7f50d40f4240) at /data/src/10.2/sql/sql_table.cc:7391
      #17 0x000055d6ca2bccd3 in mysql_alter_table (thd=0x7f507c000b00, new_db=0x7f507c0117b0 "test", new_name=0x0, create_info=0x7f50d40f4e50, table_list=0x7f507c0111a0, alter_info=0x7f50d40f4da0, order_num=0, order=0x0, ignore=false) at /data/src/10.2/sql/sql_table.cc:9392
      #18 0x000055d6ca338037 in Sql_cmd_alter_table::execute (this=0x7f507c0119b0, thd=0x7f507c000b00) at /data/src/10.2/sql/sql_alter.cc:329
      #19 0x000055d6ca1ef0f0 in mysql_execute_command (thd=0x7f507c000b00) at /data/src/10.2/sql/sql_parse.cc:6228
      #20 0x000055d6ca1f3f51 in mysql_parse (thd=0x7f507c000b00, rawbuf=0x7f507c011088 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", length=51, parser_state=0x7f50d40f6200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:8015
      #21 0x000055d6ca1e188b in dispatch_command (command=COM_QUERY, thd=0x7f507c000b00, packet=0x7f507c0088a1 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", packet_length=51, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1826
      #22 0x000055d6ca1e01e2 in do_command (thd=0x7f507c000b00) at /data/src/10.2/sql/sql_parse.cc:1379
      #23 0x000055d6ca332ccd in do_handle_one_connection (connect=0x55d6cda182f0) at /data/src/10.2/sql/sql_connect.cc:1335
      #24 0x000055d6ca332a5a in handle_one_connection (arg=0x55d6cda182f0) at /data/src/10.2/sql/sql_connect.cc:1241
      #25 0x000055d6ca75897c in pfs_spawn_thread (arg=0x55d6cda36c00) at /data/src/10.2/storage/perfschema/pfs.cc:1862
      #26 0x00007f50e39cd494 in start_thread (arg=0x7f50d40f7700) at pthread_create.c:333
      #27 0x00007f50e1db393f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      10.2 0c20b247de0

      mysqld: /data/src/10.2/storage/innobase/include/dict0dict.ic:1064: dict_field_t* dict_index_get_nth_field(const dict_index_t*, ulint): Assertion `pos < index->n_def' failed.
      190108  3:11:09 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007fde615f3ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x000055f724e42756 in dict_index_get_nth_field (index=0x7fddfc042778, pos=0) at /data/src/10.2/storage/innobase/include/dict0dict.ic:1064
      #9  0x000055f724e427ff in dict_index_get_nth_col (index=0x7fddfc042778, pos=0) at /data/src/10.2/storage/innobase/include/dict0dict.ic:1120
      #10 0x000055f724e5497b in dict_foreign_qualify_index (table=0x7fddfc43fd28, col_names=0x0, columns=0x7fddf0013848, n_cols=1, index=0x7fddf0016218, types_idx=0x7fddfc042778, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.2/storage/innobase/dict/dict0dict.cc:6934
      #11 0x000055f724e4ba8e in dict_foreign_find_index (table=0x7fddfc43fd28, col_names=0x0, columns=0x7fddf0013848, n_cols=1, types_idx=0x7fddfc042778, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.2/storage/innobase/dict/dict0dict.cc:3364
      #12 0x000055f724bd2d8a in innobase_update_foreign_try (ctx=0x7fddf00299c8, trx=0x7fde6025c3a8, table_name=0x7fddfc43f97d "t2") at /data/src/10.2/storage/innobase/handler/handler0alter.cc:7585
      #13 0x000055f724bd863e in commit_try_norebuild (ha_alter_info=0x7fde60176660, ctx=0x7fddf00299c8, altered_table=0x7fddf0011a40, old_table=0x7fddfc4596a0, trx=0x7fde6025c3a8, table_name=0x7fddfc43f97d "t2") at /data/src/10.2/storage/innobase/handler/handler0alter.cc:8036
      #14 0x000055f724bd4718 in ha_innobase::commit_inplace_alter_table (this=0x7fddfc442188, altered_table=0x7fddf0011a40, ha_alter_info=0x7fde60176660, commit=true) at /data/src/10.2/storage/innobase/handler/handler0alter.cc:8668
      #15 0x000055f724888acf in handler::ha_commit_inplace_alter_table (this=0x7fddfc442188, altered_table=0x7fddf0011a40, ha_alter_info=0x7fde60176660, commit=true) at /data/src/10.2/sql/handler.cc:4231
      #16 0x000055f7246d6792 in mysql_inplace_alter_table (thd=0x7fddf0000b00, table_list=0x7fddf0027a30, table=0x7fddfc4596a0, altered_table=0x7fddf0011a40, ha_alter_info=0x7fde60176660, inplace_supported=HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, target_mdl_request=0x7fde601766d0, alter_ctx=0x7fde60177290) at /data/src/10.2/sql/sql_table.cc:7391
      #17 0x000055f7246dbcd3 in mysql_alter_table (thd=0x7fddf0000b00, new_db=0x7fddf0028040 "test", new_name=0x0, create_info=0x7fde60177ea0, table_list=0x7fddf0027a30, alter_info=0x7fde60177df0, order_num=0, order=0x0, ignore=false) at /data/src/10.2/sql/sql_table.cc:9392
      #18 0x000055f724757037 in Sql_cmd_alter_table::execute (this=0x7fddf0028240, thd=0x7fddf0000b00) at /data/src/10.2/sql/sql_alter.cc:329
      #19 0x000055f72460e0f0 in mysql_execute_command (thd=0x7fddf0000b00) at /data/src/10.2/sql/sql_parse.cc:6228
      #20 0x000055f724612f51 in mysql_parse (thd=0x7fddf0000b00, rawbuf=0x7fddf0027918 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", length=51, parser_state=0x7fde60179250, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:8015
      #21 0x000055f72460088b in dispatch_command (command=COM_QUERY, thd=0x7fddf0000b00, packet=0x7fddf00088a1 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", packet_length=51, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1826
      #22 0x000055f7245ff1e2 in do_command (thd=0x7fddf0000b00) at /data/src/10.2/sql/sql_parse.cc:1379
      #23 0x000055f724751ccd in do_handle_one_connection (connect=0x55f728051880) at /data/src/10.2/sql/sql_connect.cc:1335
      #24 0x000055f724751a5a in handle_one_connection (arg=0x55f728051880) at /data/src/10.2/sql/sql_connect.cc:1241
      #25 0x00007fde632ca494 in start_thread (arg=0x7fde6017a700) at pthread_create.c:333
      #26 0x00007fde616b093f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      When neither of the assertion failures occurs, it (also non-deterministically) fails with an error upon CREATE OR REPLACE TABLE t1:

      mysqltest: At line 31: query 'CREATE OR REPLACE TABLE t1 (a INT) ENGINE=InnoDB' failed: 1005: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed")
      

      or upon reap:

      mysqltest: At line 36: query 'reap' failed: 1825: Failed to add the foreign key constraint on table 't2'. Incorrect options in FOREIGN KEY constraint 'test/t2_ibfk_1'
      

      I'm not sure if it should happen, both connections still have FOREIGN_KEY_CHECKS=OFF.

      Non-debug builds are also affected:

      10.1 non-debug 7158edcba

      #2  <signal handler called>
      #3  0x00007f378cfd5534 in dict_foreign_qualify_index (table=table@entry=0x7f377e1c19e8, col_names=col_names@entry=0x0, columns=columns@entry=0x7f377e4960f8, n_cols=n_cols@entry=1, index=index@entry=0x7f377e496d68, types_idx=types_idx@entry=0x7f377e1c3068, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.1/storage/innobase/dict/dict0dict.cc:7027
      #4  0x00007f378cfd8085 in dict_foreign_qualify_index (err_index=0x0, err_col_no=0x0, error=0x0, check_null=0, check_charsets=true, types_idx=0x7f377e1c3068, index=0x7f377e496d68, n_cols=1, columns=0x7f377e4960f8, col_names=0x0, table=0x7f377e1c19e8) at /data/src/10.1/storage/innobase/dict/dict0dict.cc:3396
      #5  dict_foreign_find_index (table=0x7f377e1c19e8, col_names=<optimized out>, columns=<optimized out>, n_cols=1, types_idx=0x7f377e1c3068, check_charsets=check_charsets@entry=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.1/storage/innobase/dict/dict0dict.cc:3384
      #6  0x00007f378d059571 in innobase_update_foreign_try (ctx=ctx@entry=0x7f377e421020, trx=trx@entry=0x7f377e42ba68, table_name=table_name@entry=0x7f378a27faf5 "t2") at /data/src/10.1/storage/innobase/handler/handler0alter.cc:5029
      #7  0x00007f378d05e841 in commit_try_norebuild (table_name=0x7f378a27faf5 "t2", trx=<optimized out>, old_table=0x7f377e0db808, ctx=<optimized out>, ha_alter_info=<optimized out>) at /data/src/10.1/storage/innobase/handler/handler0alter.cc:5454
      #8  ha_innodb::commit_inplace_alter_table (this=0x7f377e0bd020, altered_table=<optimized out>, ha_alter_info=<optimized out>, commit=<optimized out>) at /data/src/10.1/storage/innobase/handler/handler0alter.cc:5974
      #9  0x000055a2e8ff3865 in mysql_inplace_alter_table (target_mdl_request=<optimized out>, alter_ctx=<optimized out>, inplace_supported=<optimized out>, ha_alter_info=<optimized out>, altered_table=<optimized out>, table=<optimized out>, table_list=<optimized out>, thd=<optimized out>) at /data/src/10.1/sql/sql_table.cc:7232
      #10 mysql_alter_table (thd=0x7f378a2e2008, new_db=0x7f377e454008 "\260KE~7\177", new_name=0x7f377e41f138 "", create_info=0x7f379304efc8, table_list=0x7f377e41f138, alter_info=0x7f377e1c3068, order_num=0, order=0x0, ignore=false) at /data/src/10.1/sql/sql_table.cc:9058
      #11 0x000055a2e90361ed in Sql_cmd_alter_table::execute (this=0x55a2e9d73240 <my_charset_utf8_general_ci>, thd=0x7f378a2e2008) at /data/src/10.1/sql/sql_alter.cc:330
      #12 0x000055a2e8f6a92c in mysql_execute_command (thd=0x7f378a2e2008) at /data/src/10.1/sql/sql_parse.cc:5701
      #13 0x000055a2e8f72657 in mysql_parse (thd=0x7f378a2e2008, rawbuf=<optimized out>, length=<optimized out>, parser_state=0x7f379586a620) at /data/src/10.1/sql/sql_parse.cc:7468
      #14 0x000055a2e8f751ff in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7f378a2e2008, packet=packet@entry=0x7f378a2e8009 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", packet_length=packet_length@entry=51) at /data/src/10.1/sql/sql_parse.cc:1496
      #15 0x000055a2e8f759c2 in do_command (thd=0x7f378a2e2008) at /data/src/10.1/sql/sql_parse.cc:1124
      #16 0x000055a2e90336ec in do_handle_one_connection (thd_arg=thd_arg@entry=0x7f378a2e2008) at /data/src/10.1/sql/sql_connect.cc:1330
      #17 0x000055a2e90338a7 in handle_one_connection (arg=arg@entry=0x7f378a2e2008) at /data/src/10.1/sql/sql_connect.cc:1242
      #18 0x000055a2e92ae144 in pfs_spawn_thread (arg=0x7f379303fc08) at /data/src/10.1/storage/perfschema/pfs.cc:1861
      #19 0x00007f3795545494 in start_thread (arg=0x7f379586bb00) at pthread_create.c:333
      #20 0x00007f37938fe93f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      10.2 non-debug 0c20b247d

      2019-01-08  3:37:54 140105599043328 [ERROR] Cannot find index c in InnoDB index dictionary.
      2019-01-08  3:37:54 140105599043328 [ERROR] InnoDB indexes are inconsistent with what defined in .frm for table ./test/t2
      2019-01-08  3:37:54 140105599043328 [ERROR] InnoDB could not find key no 1 with name c from dict cache for table test/t2
      2019-01-08  3:37:54 140105599043328 [ERROR] InnoDB: Table test/t2 contains 2 indexes inside InnoDB, which is different from the number of indexes 2 defined in the MariaDB  Have you mixed up .frm files from different installations? See http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html
      

      10.4 non-debug 2465d3e00b2

      #2  <signal handler called>
      #3  cmp_cols_are_equal (col1=0x7f76ec0821c0, col2=0x0, check_charsets=check_charsets@entry=1) at /data/src/10.4/storage/innobase/rem/rem0cmp.cc:107
      #4  0x000055e8eed5bd44 in dict_foreign_qualify_index (table=0x7f76ec083280, col_names=0x0, columns=0x7f76f001c310, n_cols=1, index=0x7f76f001e0b0, types_idx=0x7f76ec05bf90, check_charsets=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.4/storage/innobase/dict/dict0dict.cc:6795
      #5  0x000055e8eed5bf5f in dict_foreign_find_index (table=0x7f76ec083280, col_names=0x0, columns=0x7f76f001c310, n_cols=1, types_idx=0x7f76ec05bf90, check_charsets=check_charsets@entry=true, check_null=0, error=0x0, err_col_no=0x0, err_index=0x0) at /data/src/10.4/storage/innobase/dict/dict0dict.cc:3292
      #6  0x000055e8eebce36b in innobase_update_foreign_try (ctx=ctx@entry=0x7f76f0013a70, trx=trx@entry=0x7f774540f1e0, table_name=table_name@entry=0x7f76ec0831d5 "t2") at /data/src/10.4/storage/innobase/handler/handler0alter.cc:9364
      #7  0x000055e8eebd3a5d in commit_try_norebuild (table_name=0x7f76ec0831d5 "t2", trx=0x7f774540f1e0, old_table=0x7f76ec07aff8, altered_table=<optimized out>, ctx=0x7f76f0013a70, ha_alter_info=<optimized out>) at /data/src/10.4/storage/innobase/handler/handler0alter.cc:10020
      #8  ha_innobase::commit_inplace_alter_table (this=<optimized out>, altered_table=<optimized out>, ha_alter_info=<optimized out>, commit=<optimized out>) at /data/src/10.4/storage/innobase/handler/handler0alter.cc:10763
      #9  0x000055e8ee6e2d80 in mysql_inplace_alter_table (thd=thd@entry=0x7f76f00009a8, table_list=0x7f76f0011958, table=table@entry=0x7f76ec07aff8, altered_table=altered_table@entry=0x7f76f001a2d8, ha_alter_info=ha_alter_info@entry=0x7f77448f8ea0, inplace_supported=inplace_supported@entry=HA_ALTER_INPLACE_NOCOPY_NO_LOCK, alter_ctx=0x7f77448f9b30, target_mdl_request=0x7f77448f8f40) at /data/src/10.4/sql/sql_table.cc:7590
      #10 0x000055e8ee85efc0 in mysql_alter_table (thd=<optimized out>, new_db=<optimized out>, new_name=<optimized out>, create_info=<optimized out>, table_list=0x7f76f0011958, alter_info=0x7f77448fa630, order_num=0, order=0x0, ignore=false) at /data/src/10.4/sql/sql_table.cc:9690
      #11 0x000055e8ee8aa9ec in Sql_cmd_alter_table::execute (this=0x2, thd=0x7f76f00009a8) at /data/src/10.4/sql/sql_alter.cc:497
      #12 0x000055e8ee7cc397 in mysql_execute_command (thd=0x7f76f00009a8) at /data/src/10.4/sql/sql_parse.cc:6302
      #13 0x000055e8ee7d2a81 in mysql_parse (thd=0x7f76f00009a8, rawbuf=<optimized out>, length=51, parser_state=0x7f77448fc640, is_com_multi=<optimized out>, is_next_command=<optimized out>) at /data/src/10.4/sql/sql_parse.cc:8104
      #14 0x000055e8ee7d53f5 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7f76f00009a8, packet=packet@entry=0x7f76f0009559 "ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1(c)", packet_length=packet_length@entry=51, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/src/10.4/sql/sql_parse.cc:1851
      #15 0x000055e8ee7d5d80 in do_command (thd=0x7f76f00009a8) at /data/src/10.4/sql/sql_parse.cc:1396
      #16 0x000055e8ee8a7e24 in do_handle_one_connection (connect=connect@entry=0x55e8f24a4e78) at /data/src/10.4/sql/sql_connect.cc:1402
      #17 0x000055e8ee8a7fc4 in handle_one_connection (arg=arg@entry=0x55e8f24a4e78) at /data/src/10.4/sql/sql_connect.cc:1308
      #18 0x000055e8eeba0474 in pfs_spawn_thread (arg=0x55e8f24c2d28) at /data/src/10.4/storage/perfschema/pfs.cc:1862
      #19 0x00007f774d0a3494 in start_thread (arg=0x7f77448fd700) at pthread_create.c:333
      #20 0x00007f774b6a493f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              kevg Eugene Kosov
              Reporter:
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated: