Hi

ne 29. 12. 2024 v 3:49 odesílatel jian he <jian.universality@gmail.com> napsal:
On Sun, Dec 29, 2024 at 5:50 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:
>
> Hi
>
>
>> ------------------<<>>>---------------
>> + else
>> + {
>> + /* the last field of list can be star too */
>> + Assert(IsA(field2, A_Star));
>> +
>> + /*
>> + * In this case, the field1 should be variable name. But
>> + * direct unboxing of composite session variables is not
>> + * supported now, and then we don't need to try lookup
>> + * related variable.
>> + *
>> + * Unboxing is supported by syntax (var).*
>> + */
>> + return InvalidOid;
>> + }
>> I don't fully understand the above comments,
>
>
> The parser allows only two syntaxes - identifier.identifier or identifier.star. Second
> syntax is not supported by session variables, and then I didn't try to search for the variable.
> Some users can be confused by similar syntaxes identifier.* and (identifier).* Only
> second syntax is composite unboxing, and only second syntax is supported for
> session variables.
>
> Maybe the note about unboxing is messy there?
>
>> add
>> `elog(INFO, "%s:%d called", __FILE__, __LINE__); ` within the ELSE branch.
>> Then I found out the ELSE branch doesn't have coverage tests.
>
>
> I don't understand this comment? I don't use elog(INFO anywhere
>
>

sorry for confusion, i mean,
i added " elog(INFO", the regress test is still successful,
therefore it means the above ELSE branch code doesn't have coverage tests.

yes, force this case can be little bit tricky

a) the variable should not be shadowed, or session_variables_ambiguity_warning should be on
b) the transformColumnRef should be executed and the star symbol should be in the list - it is possible for aggregate functions

SELECT count(v.*) FROM foo

I wrote requested regress tests

Regards

Pavel