Hi, Holyfoot! On Feb 22, holyfoot@askmonty.org wrote:
revno: 4077 revision-id: holyfoot@askmonty.org-20140222173543-xkzlp5rpga41evur parent: svoj@mariadb.org-20140218065405-vw3bfhvhrfjsc6hh committer: Alexey Botchkov <holyfoot@askmonty.org> branch nick: mdev-4856 timestamp: Sat 2014-02-22 21:35:43 +0400 message: MDEV-4856 SQL_ERROR_LOG shows 1146 errors which didnt appear in mysql client. The fill_schema_table() function used to call get_table_share() for a table name in WHERE then clear the error list. That way plugins receive the superfluous error notification if it happens in it. Also the problem was that error handler didn't prevent the suppressed error message from logging anyway as the logging happens in THD::raise_condition before the handler call. Fixed by adding the Warnings_only_error_handler before the call. raise_condition() also fixed. The Internal_error_handler class was exteded with virtual functions to handle storing the error message.
This looks too complex to me. Why would you extend the base Internal_error_handler class - no other error handler did that or needed that, fwiw. I'd simply push an error handler, store the first message there and access it in get_schema_tables_record() via THD::get_internal_handler(). Regards, Sergei