• unknown's avatar
    Bug#31081 server crash in regexp function · 64b19133
    unknown authored
    Problem: The "regex" library written by Henry Spencer
    does not support tricky character sets like UCS2.
    Fix: convert tricky character sets to UTF8 before calling
    regex functions.
    
    
    mysql-test/r/ctype_uca.result:
      Adding tests
    mysql-test/r/ctype_ucs.result:
      Adding tests
    mysql-test/r/ctype_utf8.result:
      Adding tests
    mysql-test/r/func_regexp.result:
      Adding tests
    mysql-test/t/ctype_uca.test:
      Adding tests
    mysql-test/t/ctype_ucs.test:
      Adding tests
    mysql-test/t/ctype_utf8.test:
      Adding tests
    mysql-test/t/func_regexp.test:
      Adding tests
    sql/item_cmpfunc.cc:
      - Adding new method Item_func_regex::regcomp()
      to share more code between fix_fields() and val_int()
      - Adding conversion from ASCII-incompatible charsets like UCS2
      to UTF8, because the "regexp" does not support these charsets
      - Additional optimization: calculate flags for regcomp only
        once in fix_fields, instead of every regcomp()
    sql/item_cmpfunc.h:
      Adding prototypes for new members and methods
    mysql-test/include/ctype_regex.inc:
      New BitKeeper file ``mysql-test/include/ctype_regex.inc''
      
      Moving common regular expression tests into a separate
      file and uncluding it into func_regexp and into many ctype_xxx tests.
    64b19133
item_cmpfunc.cc 125 KB