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

CHAR(0) leads to division by 0 in handler::keyread_time

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      --source include/have_innodb.inc
      CREATE TABLE t (a INT UNSIGNED KEY,b INT UNSIGNED,c INT UNSIGNED,UNIQUE bc (b,c))Engine=InnoDB;
      ALTER TABLE t ADD CONSTRAINT UNIQUE key_1 (a);
      ALTER TABLE t CHANGE COLUMN a a CHAR(0) BINARY;
      SELECT 1 FROM t WHERE a LIKE'';
      

      Leads to:

      CS 10.11.17 67fceadfa45b3f14921114544734455ecbdd480e (Debug, Clang 18.1.3-11) Build 11/02/2026

      Core was generated by `/test/MD110226-mariadb-10.11.17-linux-x86_64-dbg/bin/mariadbd --no-defaults --m'.
      Program terminated with signal SIGFPE, Arithmetic exception.
      #0  0x0000625b197e80ed in handler::keyread_time (this=0x712a6406efa8, index=1, ranges=1, rows=1) at /test/10.11_dbg/sql/handler.cc:3432
      3432	    uint keys_per_block= (uint) (stats.block_size*3/4/len+1);
      [Current thread is 1 (LWP 352123)]
      (gdb) bt
      #0  0x0000625b197e80ed in handler::keyread_time (this=0x712a6406efa8, index=1, ranges=1, rows=1) at /test/10.11_dbg/sql/handler.cc:3432
      #1  0x0000625b194b22c6 in find_shortest_key (table=0x712a64007fb8, usable_keys=0x712a64008028) at /test/10.11_dbg/sql/sql_select.cc:25594
      #2  0x0000625b1927bbca in SQL_SELECT::test_quick_select (this=0x712a64016b90, thd=0x712a64000d58, keys_to_use={static BITS_PER_ELEMENT = 64, static ARRAY_ELEMENTS = 1, static ALL_BITS_SET = 18446744073709551615, buffer = {3}}, prev_tables=0, limit=18446744073709551615, force_quick_range=false, ordered_output=false, remove_false_parts_of_where=true, only_single_index_range_scan=false, note_unusable_keys=Item_func::BITMAP_EXCEPT_ANY_EQUALITY)at /test/10.11_dbg/sql/opt_range.cc:2878
      #3  0x0000625b194bda2b in get_quick_record_count (thd=0x712a64000d58, select=0x712a64016b90, table=0x712a64007fb8, keys=0x712a64015930, limit=18446744073709551615, quick_count=0x712b4c2d0658)at /test/10.11_dbg/sql/sql_select.cc:5347
      #4  0x0000625b19479cbb in make_join_statistics (join=0x712a64014ec0, tables_list=@0x712a64013710: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x712a64015678, last = 0x712a64015678, elements = 1}, <No data fields>}, keyuse_array=0x712a64015218) at /test/10.11_dbg/sql/sql_select.cc:6114
      #5  0x0000625b19471da9 in JOIN::optimize_inner (this=0x712a64014ec0)at /test/10.11_dbg/sql/sql_select.cc:2679
      #6  0x0000625b1946f8ee in JOIN::optimize (this=0x712a64014ec0)at /test/10.11_dbg/sql/sql_select.cc:1967
      #7  0x0000625b19467752 in mysql_select (thd=0x712a64000d58, tables=0x712a64013a90, fields=@0x712a640137b0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x712a64013a40, last = 0x712a64013a40, elements = 1}, <No data fields>}, conds=0x712a64014358, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2164525824, result=0x712a64014e98, unit=0x712a64005028, select_lex=0x712a640134f8)at /test/10.11_dbg/sql/sql_select.cc:5271
      #8  0x0000625b19467295 in handle_select (thd=0x712a64000d58, lex=0x712a64004f50, result=0x712a64014e98, setup_tables_done_option=0)at /test/10.11_dbg/sql/sql_select.cc:601
      #9  0x0000625b1940e8c1 in execute_sqlcom_select (thd=0x712a64000d58, all_tables=0x712a64013a90) at /test/10.11_dbg/sql/sql_parse.cc:6463
      #10 0x0000625b1940239a in mysql_execute_command (thd=0x712a64000d58, is_called_from_prepared_stmt=false)at /test/10.11_dbg/sql/sql_parse.cc:4042
      #11 0x0000625b193fa4c4 in mysql_parse (thd=0x712a64000d58, rawbuf=0x712a64013460 "SELECT 1 FROM t WHERE a LIKE''", length=30, parser_state=0x712b4c2d2a20) at /test/10.11_dbg/sql/sql_parse.cc:8223
      #12 0x0000625b193f7969 in dispatch_command (command=COM_QUERY, thd=0x712a64000d58, packet=0x712a6400aee9 "SELECT 1 FROM t WHERE a LIKE''", packet_length=30, blocking=true) at /test/10.11_dbg/sql/sql_parse.cc:1924
      #13 0x0000625b193fb073 in do_command (thd=0x712a64000d58, blocking=true)at /test/10.11_dbg/sql/sql_parse.cc:1434
      #14 0x0000625b195d8689 in do_handle_one_connection (connect=0x625b22711e58, put_in_cache=true) at /test/10.11_dbg/sql/sql_connect.cc:1475
      #15 0x0000625b195d8422 in handle_one_connection (arg=0x625b227f9038)at /test/10.11_dbg/sql/sql_connect.cc:1387
      #16 0x0000712b4ea9caa4 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #17 0x0000712b4eb29c6c in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      Bug Detection Matrix

          Rel    o/d  Build   Commit                                    UniqueID observed             
      CS  10.6   dbg  110226  1758b2578a8cc7e193bb35de0d8dc9a5e517c89c  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      CS  10.6   opt  110226  1758b2578a8cc7e193bb35de0d8dc9a5e517c89c  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      CS  10.11  dbg  110226  67fceadfa45b3f14921114544734455ecbdd480e  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      CS  10.11  opt  110226  67fceadfa45b3f14921114544734455ecbdd480e  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      CS  11.4   dbg  110226  78201a41b5e88b94c27f5ecc16c9e5486e2e50c3  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      CS  11.4   opt  110226  78201a41b5e88b94c27f5ecc16c9e5486e2e50c3  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      CS  11.8   dbg  110226  65ee9a7b4694d1b6f366b5a7a3d1b0549e5a3671  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      CS  11.8   opt  110226  65ee9a7b4694d1b6f366b5a7a3d1b0549e5a3671  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      CS  12.2   dbg  110226  d26a6f44c1f2119377e79a9540886c6d8c01472f  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      CS  12.2   opt  110226  d26a6f44c1f2119377e79a9540886c6d8c01472f  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      CS  12.3   dbg  110226  21a0714a118614982d20bfa504763d7247800091  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      CS  12.3   opt  110226  21a0714a118614982d20bfa504763d7247800091  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      ES  10.6   dbg  110226  22e626b9c17e9969925c54f14d30e39e25320b22  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      ES  10.6   opt  110226  22e626b9c17e9969925c54f14d30e39e25320b22  SIGFPE|handler::keyread_time|find_shortest_key|SQL_SELECT::test_quick_select|get_quick_record_count
      ES  11.4   dbg  110226  34f616d5fd2c649d0c79acb4e2423c90b8f10436  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      ES  11.4   opt  110226  34f616d5fd2c649d0c79acb4e2423c90b8f10436  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      ES  11.8   dbg  110226  405ee76b60c4ab82155f339136ed20d3b7363717  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|ha_innobase::multi_range_read_info_const|check_quick_select
      ES  11.8   opt  110226  405ee76b60c4ab82155f339136ed20d3b7363717  SIGFPE|handler::multi_range_read_info_const|DsMrr_impl::dsmrr_info_const|check_quick_select|get_key_scans_params
      

      Attachments

        Issue Links

          Activity

            People

              bar Alexander Barkov
              saahil Saahil Alam
              Votes:
              0 Vote for this issue
              Watchers:
              2 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.