On Tue, 2021-03-02 at 10:35 -0800, Zhihong Yu wrote:
> Hi,

Thanks for the review!

> +   /* Make sure the the new slot is not dependent on the original tuple */
> 
> There is duplicate 'the'.

Thanks, I'll add this for the next batch of updates.

> For neededColumnContextWalker(),
> 
> +       else if(var->varattno == 0) {
> 
> I think the if following the else is not needed - I assume var->varattno 
> wouldn't be negative.
> Similar comment for extract_scan_columns().

I think you can have system columns in the tree here -- a common
example that we run into with the `make check` suite is ctid. (To see
this, you can change the (> 0) check just above this code into a (!= 0)
check, and then take a look at the failing cases in the test suite.)

> +   while ((col = bms_next_member(parent_cols, col)) >= 0)
> +   {
> +       Var *var = (Var *) list_nth(translated_vars, col - 1);
> 
> If col is 0, do you still want to call list_nth() ?

The (col == 0) case is handled just above this, with
contains_whole_row_col() and get_ordinal_attnos() replacing any zero
columns with the entire user-column range. If one of those functions
fails to do its job due to programmer error, we'll assert in the call
to list_nth(), and I think that's what we want.

--Jacob

Reply via email to