• Marko Mäkelä's avatar
    MDEV-34823 Invalid arguments in ib_push_warning() · 024a18db
    Marko Mäkelä authored
    In the bug report MDEV-32817 it occurred that the function
    row_mysql_get_table_status() is outputting a fil_space_t*
    as if it were a numeric tablespace identifier.
    
    ib_push_warning(): Remove. Let us invoke push_warning_printf() directly.
    
    innodb_decryption_failed(): Report a decryption failure and set the
    dict_table_t::file_unreadable flag. This code was being duplicated in
    very many places. We return the constant value DB_DECRYPTION_FAILED
    in order to avoid code duplication in the callers and to allow tail calls.
    
    innodb_fk_error(): Report a FOREIGN KEY error.
    
    dict_foreign_def_get(), dict_foreign_def_get_fields(): Remove.
    This code was being used in dict_create_add_foreign_to_dictionary()
    in an apparently uncovered code path. That ib_push_warning() call
    would pass the integer i+1 instead of a pointer to NUL terminated
    string ("%s"), and therefore the call should have resulted in a crash.
    
    dict_print_info_on_foreign_key_in_create_format(),
    innobase_quote_identifier(): Add const qualifiers.
    
    row_mysql_get_table_error(): Replaces row_mysql_get_table_status().
    Display no message on DB_CORRUPTION; it should be properly reported at
    the SQL layer anyway.
    024a18db
btr0btr.cc 153 KB