228 errmsg(
"collation mismatch between implicit collations \"%s\" and \"%s\"",
231 errhint(
"You can choose the collation by applying the COLLATE clause to one or both expressions."),
326 collation = expr->resultcollid;
381 expr->inputcollids =
colls;
421 collation = typcollation;
475 errmsg(
"collation mismatch between implicit collations \"%s\" and \"%s\"",
478 errhint(
"You can choose the collation by applying the COLLATE clause to one or both expressions."),
600 switch (aggref->aggkind)
616 (
int) aggref->aggkind);
728 collation = typcollation;
805 else if (strength == context->
strength)
855 errmsg(
"collation mismatch between explicit collations \"%s\" and \"%s\"",
1005 errmsg(
"collation mismatch between implicit collations \"%s\" and \"%s\"",
1008 errhint(
"You can choose the collation by applying the COLLATE clause to one or both expressions."),
#define Assert(condition)
#define OidIsValid(objectId)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
List * lappend_oid(List *list, Oid datum)
Oid get_func_variadictype(Oid funcid)
Oid get_typcollation(Oid typid)
char * get_collation_name(Oid colloid)
RelabelType * makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat)
Oid exprType(const Node *expr)
void exprSetCollation(Node *expr, Oid collation)
int32 exprTypmod(const Node *expr)
Oid exprCollation(const Node *expr)
void exprSetInputCollation(Node *expr, Oid inputcollation)
int exprLocation(const Node *expr)
#define QTW_IGNORE_CTE_SUBQUERIES
#define query_tree_walker(q, w, c, f)
#define expression_tree_walker(n, w, c)
#define QTW_IGNORE_RANGE_TABLE
#define IsA(nodeptr, _type_)
void assign_list_collations(ParseState *pstate, List *exprs)
Oid select_common_collation(ParseState *pstate, List *exprs, bool none_ok)
static bool assign_collations_walker(Node *node, assign_collations_context *context)
static void assign_aggregate_collations(Aggref *aggref, assign_collations_context *loccontext)
static bool assign_query_collations_walker(Node *node, ParseState *pstate)
void assign_query_collations(ParseState *pstate, Query *query)
static void merge_collation_state(Oid collation, CollateStrength strength, int location, Oid collation2, int location2, assign_collations_context *context)
static void assign_ordered_set_collations(Aggref *aggref, assign_collations_context *loccontext)
void assign_expr_collations(ParseState *pstate, Node *expr)
static void assign_hypothetical_collations(Aggref *aggref, assign_collations_context *loccontext)
int parser_errposition(ParseState *pstate, int location)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define linitial_node(type, l)
#define forboth(cell1, list1, cell2, list2)
static ListCell * list_head(const List *l)
static ListCell * lnext(const List *l, const ListCell *c)
#define list_make2(x1, x2)