mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
Fix inconsistent equalfuncs.c behavior for FuncCall.funcformat.
Other equalfuncs.c checks on CoercionForm fields use COMPARE_COERCIONFORM_FIELD (which makes them no-ops), but commit40c24bfef
neglected to make _equalFuncCall do likewise. Fix that. This is only strictly correct if FuncCall.funcformat has no semantic effect, instead just determining ruleutils.c display formatting.40c24bfef
added a couple of checks in parse analysis that could break that rule; but on closer inspection, they're redundant, so just take them out again. Per report from Noah Misch. Discussion: https://postgr.es/m/20210606063331.GC297923@rfd.leadboat.com
This commit is contained in:
@ -2420,7 +2420,7 @@ _equalFuncCall(const FuncCall *a, const FuncCall *b)
|
|||||||
COMPARE_SCALAR_FIELD(agg_star);
|
COMPARE_SCALAR_FIELD(agg_star);
|
||||||
COMPARE_SCALAR_FIELD(agg_distinct);
|
COMPARE_SCALAR_FIELD(agg_distinct);
|
||||||
COMPARE_SCALAR_FIELD(func_variadic);
|
COMPARE_SCALAR_FIELD(func_variadic);
|
||||||
COMPARE_SCALAR_FIELD(funcformat);
|
COMPARE_COERCIONFORM_FIELD(funcformat);
|
||||||
COMPARE_LOCATION_FIELD(location);
|
COMPARE_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -543,7 +543,6 @@ transformRangeFunction(ParseState *pstate, RangeFunction *r)
|
|||||||
!fc->agg_star &&
|
!fc->agg_star &&
|
||||||
!fc->agg_distinct &&
|
!fc->agg_distinct &&
|
||||||
!fc->func_variadic &&
|
!fc->func_variadic &&
|
||||||
fc->funcformat == COERCE_EXPLICIT_CALL &&
|
|
||||||
coldeflist == NIL)
|
coldeflist == NIL)
|
||||||
{
|
{
|
||||||
ListCell *lc;
|
ListCell *lc;
|
||||||
|
@ -222,7 +222,6 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
|
|||||||
agg_order == NIL && agg_filter == NULL &&
|
agg_order == NIL && agg_filter == NULL &&
|
||||||
!agg_star && !agg_distinct && over == NULL &&
|
!agg_star && !agg_distinct && over == NULL &&
|
||||||
!func_variadic && argnames == NIL &&
|
!func_variadic && argnames == NIL &&
|
||||||
funcformat == COERCE_EXPLICIT_CALL &&
|
|
||||||
list_length(funcname) == 1 &&
|
list_length(funcname) == 1 &&
|
||||||
(actual_arg_types[0] == RECORDOID ||
|
(actual_arg_types[0] == RECORDOID ||
|
||||||
ISCOMPLEX(actual_arg_types[0])));
|
ISCOMPLEX(actual_arg_types[0])));
|
||||||
|
Reference in New Issue
Block a user