mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
Add select_common_typmod()
This accompanies select_common_type() and select_common_collation(). Typmods were previously combined using hand-coded logic in several places. The logic in select_common_typmod() isn't very exciting, but it makes the code more compact and readable in a few locations, and in the future we can perhaps do more complicated things if desired. As a small enhancement, the type unification of the direct and aggregate arguments of hypothetical-set aggregates now unifies the typmod as well using this new function, instead of just dropping it. Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://www.postgresql.org/message-id/flat/97df3af9-8b5e-fb7f-a029-3eb7e80d7af9@2ndquadrant.com
This commit is contained in:
@ -1568,24 +1568,13 @@ buildMergedJoinVar(ParseState *pstate, JoinType jointype,
|
||||
*r_node,
|
||||
*res_node;
|
||||
|
||||
/*
|
||||
* Choose output type if input types are dissimilar.
|
||||
*/
|
||||
outcoltype = l_colvar->vartype;
|
||||
outcoltypmod = l_colvar->vartypmod;
|
||||
if (outcoltype != r_colvar->vartype)
|
||||
{
|
||||
outcoltype = select_common_type(pstate,
|
||||
outcoltype = select_common_type(pstate,
|
||||
list_make2(l_colvar, r_colvar),
|
||||
"JOIN/USING",
|
||||
NULL);
|
||||
outcoltypmod = select_common_typmod(pstate,
|
||||
list_make2(l_colvar, r_colvar),
|
||||
"JOIN/USING",
|
||||
NULL);
|
||||
outcoltypmod = -1; /* ie, unknown */
|
||||
}
|
||||
else if (outcoltypmod != r_colvar->vartypmod)
|
||||
{
|
||||
/* same type, but not same typmod */
|
||||
outcoltypmod = -1; /* ie, unknown */
|
||||
}
|
||||
outcoltype);
|
||||
|
||||
/*
|
||||
* Insert coercion functions if needed. Note that a difference in typmod
|
||||
|
Reference in New Issue
Block a user