• unknown's avatar
    Bug#28875 Conversion between ASCII and LATIN1 charsets does not function · 53df09a9
    unknown authored
    (Regression, caused by a patch for the bug 22646).
    Problem: when result type of date_format() was changed from
    binary string to character string, mixing date_format()
    with a ascii column in CONCAT() stopped to work.
    Fix:
    - adding "repertoire" flag into DTCollation class,
    to mark items which can return only pure ASCII strings.
    - allow character set conversion from pure ASCII to other character sets.
    
    
    include/m_ctype.h:
      Defining new flags.
      Adding new function prototypes.
    mysql-test/r/ctype_ucs.result:
      Adding tests.
    mysql-test/r/ctype_utf8.result:
      Adding tests.
    mysql-test/r/func_time.result:
      Adding tests.
    mysql-test/t/ctype_ucs.test:
      Adding tests.
    mysql-test/t/ctype_utf8.test:
      Adding tests.
    mysql-test/t/func_time.test:
      Adding test.
    mysys/charset.c:
      Adding pure ASCII detection when loading a dynamic character set.
    sql/item.cc:
      - Moving detection of a Unicode superset into function.
      - Adding detection of a ASCII subset.
      - Adding creation of to-ASCII character set convertor when
        safe_charset_converter() failed and when the argument.
        repertoire is know to be pure ASCII.
    sql/item.h:
      - Adding "repertoire" member into DTCollation class.
      - Adding "repertoire" argument to constructors.
      - Adding new methods:
        set_repertoire_from_charset()
        set_repertoire_from_value()
    sql/item_func.cc:
      Adding "repertoire" argument.
    sql/item_strfunc.cc:
      Adding "repertoire" argument.
    sql/item_timefunc.cc:
      Initializing the result repertoire taking into account the "is_ascii"
      flag of the current locale.
    sql/sql_lex.cc:
      Detect 7bit strings, return in Lex->text_string_is_7bit.
    sql/sql_lex.h:
      Adding new member into LEX structure.
      Adding new member into Lex_input_stream
    sql/sql_string.cc:
      Allow simple copy from pure ASCII to a ASCII-based character set.
    sql/sql_yacc.yy:
      Depening on Lex->text_string_is_7bit and character set features,
      create Item_string with MY_REPERTOIRE_ASCII when it is possible.
    strings/conf_to_src.c:
      - Adding printing of the "MY_CS_PUREASCII" flag
      - Adding printing of copyright
    strings/ctype-extra.c:
      Recreating ctype-extra.c: ascii_general_ci and ascii_bin
      are now marked with MY_CS_PUREASCII flag.
    strings/ctype.c:
      Adding new functions.
    53df09a9
sql_string.cc 24.3 KB