• Alexander Barkov's avatar
    MDEV-20856 Bad values in metadata views for partitions on VARBINARY · 9a833dc6
    Alexander Barkov authored
    The old code to print partition values was too complicated:
    - it created new Items for character set conversion purposes.
    - it mixed string conversion and partition error reporting
      in the same code blocks.
    
    Simplifying the code as follows:
    
    - Adding helper methods String::can_be_safely_convert_to() and
      String::append_introducer_and_hex().
    
    - Adding DBUG_EXECUTE_IF("generate_partition_syntax_for_frm",  push_warning...)
      into generate_partition_syntax_for_frm(), to test the PARTITON
      clause written to FRM. Adding test partition_utf8-debug.test for this.
    
    - Removing functions get_cs_converted_part_value_from_string() and
      get_cs_converted_string_value. Changing get_partition_column_description()
      to use Type_handler::partition_field_append_value() instead.
      This makes SHOW CREATE TABLE and SELECT FROM I_S.PARTITIONS
      use the same code path.
    
    - Changing Type_handler::partition_field_append_value() not to
      call convert_charset_partition_constant(), to avoid creating a new Item
      for string conversion pursposes.
      Rewritting the code to use only String methods.
    
    - Removing error reporting code (ER_PARTITION_FUNCTION_IS_NOT_ALLOWED)
      from Type_handler::partition_field_append_value().
      The error is correctly detected and reported on the caller level.
      So error reporting was redundant here.
    
    Also:
    
    - Moving methods Type_handler::partition_field_*() from sql_partition.cc
      to sql_type.cc. This fixes compilation problem with -DPLUGIN_PARTITION=NO,
      earlier introduced by the patch for MDEV-20831.
    9a833dc6
sql_show.cc 324 KB