• unknown's avatar
    Bug#32848: Data type conversion bug in union subselects in MySQL 5.0.38 · 94f75ffc
    unknown authored
    There were two problems when inferring the correct field types resulting from
    UNION queries.
    - If the type is NULL for all corresponding fields in the UNION, the resulting 
      type would be NULL, while the type is BINARY(0) if there is just a single 
      SELECT NULL.
    - If one SELECT in the UNION uses a subselect, a temporary table is created
      to represent the subselect, and the result type defaults to a STRING type,
      hiding the fact that the type was unknown(just a NULL value).
    Fixed by remembering whenever a field was created from a NULL value and pass
    type NULL to the type coercion if that is the case, and creating a string field
    as result of UNION only if the type would otherwise be NULL.
    
    
    mysql-test/r/union.result:
      Bug#32848: Test result
    mysql-test/t/union.test:
      Bug#32848: Test case
    sql/field.cc:
      Bug#32848: Initialization of new field
    sql/field.h:
      Bug#32848: New member to record when a field was created from a NULL value.
    sql/item.cc:
      Bug#32848: 
      A field created from a NULL value will submit NULL as type to the 
      type coercion procedure.
      If Item_type_holder has not inferred the correct type after processing all
      SELECTs in a UNION, a string field is created.
    sql/sql_select.cc:
      Bug#32848: Recording when a field is created from a NULL value.
    94f75ffc
field.cc 250 KB