From: Amit Kapila <amit.kapila16@gmail.com>
> + /* Get the number of blocks for a relation's fork */
> + block[i][j] = smgrnblocks(smgr_reln[i], j, &cached);
> +
> + if (!cached)
> + goto buffer_full_scan;
>
> Why do we need to use goto here? We can simply break from the loop and
> then check if (cached && nBlocksToInvalidate <
> BUF_DROP_FULL_SCAN_THRESHOLD). I think we should try to avoid goto if
> possible without much complexity.
That's because two for loops are nested -- breaking there only exits the inner loop. (I thought the same as you at
first...And I understand some people have alergy to goto, I think modest use of goto makes the code readable.)
Regards
Takayuki Tsunakawa