• K
    Dispatch exactly same text string for all slices. · 4b360942
    Kenan Yao 提交于
    Include a map from sliceIndex to gang_id in the dispatched string,
    and remove the localSlice field, hence QE should get the localSlice
    from the map now. By this way, we avoid duplicating and modifying
    the dispatch text string slice by slice, and each QE of a sliced
    dispatch would get same contents now.
    
    The extra space cost is sizeof(int) * SliceNumber bytes, and the extra
    computing cost is iterating the SliceNumber-size array. Compared with
    memcpy of text string for each slice in previous implementation, this
    way is much cheaper, because SliceNumber is much smaller than the size
    of dispatch text string. Also, since SliceNumber is so small, we just
    use an array for the map instead of a hash table.
    
    Also, clean up some dead code in dispatcher, including:
    (1) Remove primary_gang_id field of Slice struct and DispatchCommandDtxProtocolParms
    struct, since dispatch agent is deprecated now;
    (2) Remove redundant logic in cdbdisp_dispatchX;
    (3) Clean up buildGpDtxProtocolCommand;
    4b360942
cdbdisp_dtx.c 12.6 KB