• Alexander Barkov's avatar
    MDEV-11146 SP variables of the SET data type erroneously allow values with comma · e5dfe04d
    Alexander Barkov authored
    There was a duplicate code to create TYPELIB from List<String>:
    - In typelib() and mysql_prepare_create_table(), which was used to initialize
      table fields.
    - create_typelib() and sp_prepare_create_field(), which was used to initialize
      SP variables.
    create_typelib() was incomplete and didn't check for wrong SET values.
    
    Fix:
    - Moving the code from create_typelib() and mysql_prepare_create_field()
      to news methods Column_definition::create_interval_from_interval_list()
      and Column_definition::prepare_interval_field().
    - Moving the code from calculate_interval_lengths() in sql_table.cc
      to a new method Column_definition::calculate_interval_lengths(), as it's now
      needed only in Column_definition::create_interval_from_interval_list()
    - Reusing the new method Column_definition::prepare_interval_field() in both
      mysql_prepare_create_table() and sp_prepare_create_field(), instead of the
      old duplicate code pieces
    - Removing global functions typelib() and create_typelib()
    
    This patch also fixes:
    MDEV-11155 Bad error message when creating a SET column with comma and non-ASCII characters
    The problem was that ErrCongString() was called with a wrong "charset" parameter.
    e5dfe04d
table.cc 241 KB