• unknown's avatar
    Complementary fix for bug #29353: inserting a negative value to a csv table · b16b2683
    unknown authored
    leads to the table corruption
    
    New Field::store() method implemented to explicitly set thd->count_cuted_fields
    before value storing, instead of (incorrectly) setting it in the CSV storage engine.
    Thread row counter now properly incremented during check and repair in the CSV engine.
    
    
    include/mysql/plugin.h:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - thd_inc_row_count() function prototype added, which allows a storage 
          engine to increment thread row counter.
    mysql-test/r/csv.result:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - result adjusted.
    sql/field.cc:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - Field::store(const char *to, uint length, CHARSET_INFO *cs,
                       enum_check_fields check_level)
          method introduced in order to explicitly set count_cuted_fields before 
          a ::store call, then reset it back after.
    sql/field.h:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - Field::store(const char *to, uint length, CHARSET_INFO *cs,
                       enum_check_fields check_level)
          method introduced in order to explicitly set count_cuted_fields before 
          a ::store call, then reset it back after.
    sql/mysql_priv.h:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - enum enum_check_fields moved from sql/sql_class.h to sql/mysql_priv.h
          as it's used now in the field.h
    sql/sql_class.cc:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - implementation of the new thd_inc_row_count() function which increments
          thread row counter.
    sql/sql_class.h:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - enum enum_check_fields moved from sql/sql_class.h to sql/mysql_priv.h
          as it's used now in the field.h
    storage/csv/ha_tina.cc:
      Complementary fix for bug #29353: inserting a negative value to a csv table 
      leads to the table corruption
        - removed #define MYSQL_SERVER 1 - "a storage engine should not need 
          internals of the server"
        - removed thd->count_cuted_fields= CHECK_FIELD_WARN as we are not allowed to 
          access internals of THD.
        - used new Field::store() method to explicitly set thd->count_cuted_fields to
          CHECK_FIELD_WARN
        - thd_inc_row_count() calls added to ha_tina::repair() and ha_tina::check()
          to get proper row count values.
    b16b2683
plugin.h 23.8 KB