• Aleksey Midenkov's avatar
    MDEV-22464 Server crash on UPDATE with nested subquery · ff77a09b
    Aleksey Midenkov authored
    Uninitialized ref_pointer_array[] because setup_fields() got empty
    fields list.  mysql_multi_update() for some reason does that by
    substituting the fields list with empty total_list for the
    mysql_select() call (looks like wrong merge since total_list is not
    used anywhere else and is always empty). The fix would be to return
    back the original fields list. But this fails update_use_source.test
    case:
    
      --error ER_BAD_FIELD_ERROR
      update v1 set t1c1=2 order by 1;
    
    Actually not failing the above seems to be ok.
    
    The other fix would be to keep resolve_in_select_list false (and that
    keeps outer context from being resolved in
    Item_ref::fix_fields()). This fix is more consistent with how SELECT
    behaves:
    
      --error ER_SUBQUERY_NO_1_ROW
      select a from t1 where a= (select 2 from t1 having (a = 3));
    
    So this patch implements this fix.
    ff77a09b
sql_select.cc 911 KB