Thread

  1. Remove unneccessary memory initialization in planner.c

    Chao Li <li.evan.chao@gmail.com> — 2025-12-08T11:10:58Z

    Hi Hackers,
    
    In this code piece:
    ```
    static grouping_sets_data *
    preprocess_grouping_sets(PlannerInfo *root)
    {
    ...
    grouping_sets_data *gd = palloc0(sizeof(grouping_sets_data));
    ...
    gd->any_hashable = false;
    gd->unhashable_refs = NULL;
    gd->unsortable_refs = NULL;
    gd->unsortable_sets = NIL;
    ...
    ```
    
    "gd" is allocated by palloc0, so all members have been zero initialized,
    thus explicitly assigning NULL to the 4 members is unnecessary. I don't
    think that has much runtime impact, but from a readability perspective, a
    potential question is that, "gd" has more fields, why only set 0 to these 4
    members redundantly?
    
    To avoid the potential confusion, I think we'd better delete these
    initializations.
    
    Begards,
    Chao Li (Evan)
    ---------------------
    HighGo Software Co., Ltd.
    https://www.highgo.com/
    
  2. Re: Remove unneccessary memory initialization in planner.c

    Aleksander Alekseev <aleksander@tigerdata.com> — 2025-12-08T12:17:25Z

    Hi Chao,
    
    > "gd" is allocated by palloc0, so all members have been zero initialized, thus explicitly assigning NULL to the 4 members is unnecessary. I don't think that has much runtime impact, but from a readability perspective, a potential question is that, "gd" has more fields, why only set 0 to these 4 members redundantly?
    >
    > To avoid the potential confusion, I think we'd better delete these initializations.
    
    Good find. I agree that this code is redundant. Or alternatively we
    should do palloc() and assign all the initial values explicitly.
    
    -- 
    Best regards,
    Aleksander Alekseev