• Binbin's avatar
    Fix accidental deletion of sinterstore command when we meet wrong type error. (#9032) · 88655019
    Binbin authored
    SINTERSTORE would have deleted the dest key right away,
    even when later on it is bound to fail on an (WRONGTYPE) error.
    
    With this change it first picks up all the input keys, and only later
    delete the dest key if one is empty.
    
    Also add more tests for some commands.
    Mainly focus on
    - `wrong type error`:
    	expand test case (base on sinter bug) in non-store variant
    	add tests for store variant (although it exists in non-store variant, i think it would be better to have same tests)
    - the dstkey result when we meet `non-exist key (empty set)` in *store
    
    sdiff:
    - improve test case about wrong type error (the one we found in sinter, although it is safe in sdiff)
    - add test about using non-exist key (treat it like an empty set)
    sdiffstore:
    - according to sdiff test case, also add some tests about `wrong type error` and `non-exist key`
    - the different is that in sdiffstore, we will consider the `dstkey` result
    
    sunion/sunionstore add more tests (same as above)
    
    sinter/sinterstore also same as above ...
    
    (cherry picked from commit b8a5da80)
    88655019
t_set.c 40.7 KB