• unknown's avatar
    Fix for bug#15228 "'invalid access to non-static data member' · 1a793de9
    unknown authored
    warnings in sql_trigger.cc and sql_view.cc".
    
    According to the current version of C++ standard offsetof() macro
    can't be used for non-POD types. So warnings were emitted when we
    tried to use this macro for TABLE_LIST and Table_triggers_list
    classes. Note that despite of these warnings it was probably safe
    thing to do.
    
    This fix tries to circumvent this limitation by implementing
    custom version of offsetof() macro to be used with these
    classes. This hack should go away once we will refactor
    File_parser class.
    
    Alternative approaches such as disabling this warning for
    sql_trigger.cc/sql_view.cc or for the whole server were
    considered less explicit. Also I was unable to find a way
    to disable particular warning for particular _part_ of
    file in GCC.
    
    
    sql/parse_file.h:
      Introduced auxillary macro which can be used instead of offsetof()
      to get offsets of members in class for non-POD types without getting
      warnings (assuming that all instances of the class has same offsets
      for same members).
    sql/sql_trigger.cc:
      Use my_offsetof() macro instead of standard offsetof() macro with
      Table_triggers_list class in order to avoid warnings (offsetof()
      cannot be used for non-POD types according to the standard).
    sql/sql_view.cc:
      Use my_offsetof() macro instead of standard offsetof() macro with
      TABLE_LIST class in order to avoid warnings (offsetof() cannot
      be used for non-POD types according to the standard).
    1a793de9
parse_file.h 4.35 KB