• unknown's avatar
    Bug#15776: 32-bit signed int used for length of blob · 1ca9c5d9
    unknown authored
    Based on contributed patch from Martin Friebe, CLA from 2007-02-24.
    
    The parser lacked support for field sizes after signed long,
    when it should extend to 2**32-1.
    
    Now, we correct that limitation, and also make the error handling
    consistent for casts.
    
    
    mysql-test/r/type_blob.result:
      Verify that blobs may be created with the size that is already
      documented.
      
      Additionally, test the limits of several other types.
    mysql-test/t/type_blob.test:
      Verify that blobs may be created with the size that is already
      documented.
      
      Additionally, test the limits of several other types.
    sql/field.cc:
      atoi() insufficient to gauge the length of some fields.  Change
      it to strtoul().
    sql/item_create.cc:
      atoi() insufficient to gauge the length of some fields.  Change
      it to strtoul().
      
      If a casted length is too long, raise an error.
    sql/share/errmsg.txt:
      Change ER_TOO_BIG_FIELDLENGTH so that it can accept sizes larger
      than 2**15 -- instead, 2**32.
    sql/sql_yacc.yy:
      Make lengths take, in addition to NUM, LONG_NUM, ULONGLONG_NUM,
      and DECIMAL_NUM.
    sql/unireg.h:
      Define new constant.
    1ca9c5d9
unireg.h 7.16 KB