• Michael Widenius's avatar
    Fixed lp:879939 "assertion in ha_maria::enable_indexes with derived_with_keys=on" · fa36a742
    Michael Widenius authored
    Honor unique/not unique when creating keys for internal tempory tables.
    Added new variables to be used to limit how keys are created for internal temporary tables.
    
    
    include/maria.h:
      Added maria_max_key_length() and maria_max_key_segments()
    include/myisam.h:
      Added myisam_max_key_length() and myisam_max_key_segments()
    mysql-test/r/mysql.result:
      Drop all used tables
    mysql-test/r/subselect4.result:
      Added test case for lp:879939
    mysql-test/t/mysql.test:
      Drop all used tables
    mysql-test/t/subselect4.test:
      Added test case for lp:879939
    sql/mysql_priv.h:
      Added internal_tmp_table_max_key_length and internal_tmp_table_max_key_segments to be used to limit how keys for derived tables are created.
    sql/mysqld.cc:
      Added internal_tmp_table_max_key_length and internal_tmp_table_max_key_segments to be used to limit how keys for derived tables are created.
    sql/share/errmsg.txt:
      Added new error message for internal errors
    sql/sql_select.cc:
      Give error if we try to create a wrong key (this error should never happen)
      Honor unique/not unique when creating keys for internal tempory tables.
    storage/maria/ha_maria.cc:
      Added change_table_ptr() to ensure that external_ref points always to the correct table.
      (Not having this caused an assert in the included test)
    storage/maria/ha_maria.h:
      Added change_table_ptr() to ensure that external_ref points always to the correct table.
    storage/maria/ma_check.c:
      Fixed bug in Duplicate key error printing (now row position is printed correctly)
    storage/maria/ma_create.c:
      maria_max_key_length() -> _ma_max_key_length()
    storage/maria/ma_info.c:
      Added extern function maria_max_key_length() to calculate the max key length based on current block size.
    storage/maria/ma_open.c:
      maria_max_key_length() -> _ma_max_key_length()
    storage/maria/maria_def.h:
      maria_max_key_length() -> _ma_max_key_length()
    storage/myisam/ha_myisam.cc:
      Added change_table_ptr() to ensure that external_ref points always to the correct table.
      (Not having this caused an assert in the included test)
    storage/myisam/ha_myisam.h:
      Added change_table_ptr() to ensure that external_ref points always to the correct table.
    fa36a742
ha_maria.cc 123 KB