| Bug #108790 | Invisible column's default values is invalid if not specify other columns | ||
|---|---|---|---|
| Submitted: | 15 Oct 2022 16:46 | Modified: | 17 Oct 2022 6:55 | 
| Reporter: | Cheng Zhou | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: DML | Severity: | S2 (Serious) | 
| Version: | 8.0.30 | OS: | Any | 
| Assigned to: | CPU Architecture: | Any | |
   [15 Oct 2022 16:46]
   Cheng Zhou        
  
 
   [15 Oct 2022 18:21]
   Cheng Zhou        
  in function:
bool Sql_cmd_insert_values::execute_inner(THD *thd) {
   ....
  /*
    We have three alternative syntax rules for the INSERT statement:
    1) "INSERT (columns) VALUES ...", so non-listed columns need a default
    2) "INSERT VALUES (), ..." so all columns need a default;
    note that "VALUES (),(expr_1, ..., expr_n)" is not allowed, so checking
    emptiness of the first row is enough
    3) "INSERT VALUES (expr_1, ...), ..." so no defaults are needed; even if
    expr_i is "DEFAULT" (in which case the column is set by
    Item_default_value::save_in_field_inner()).
  */
  const bool manage_defaults = column_count > 0 ||  // 1)
                               value_count == 0;    // 2)
  ....
}
--------------------------------------------------------------------
Fail to take into account invisible columns when set manage_defaults.
 
   [17 Oct 2022 6:55]
   MySQL Verification Team        
  Hello Cheng Zhou, Thank you for the report and test case. Verified as described. regards, Umesh

