diff --git a/src/backend/parser/parse_oper.c b/src/backend/parser/parse_oper.c index 73be990c010..7b30131251e 100644 --- a/src/backend/parser/parse_oper.c +++ b/src/backend/parser/parse_oper.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.41 2000/05/28 17:56:00 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.42 2000/11/07 16:01:01 thomas Exp $ * *------------------------------------------------------------------------- */ @@ -443,8 +443,21 @@ oper_select_candidate(int nargs, } else if (current_category != slot_category) { - /* punt if more than one category for this slot */ - return NULL; + /* started out as unknown type, so give preference to string type, if available */ + if (current_category == STRING_TYPE) + { + /* forget all previous candidates */ + candidates = current_candidate; + last_candidate = current_candidate; + } + else if (slot_category == STRING_TYPE) + { + /* forget this candidate */ + if (last_candidate) + last_candidate->next = current_candidate->next; + else + candidates = current_candidate->next; + } } else if (current_type != slot_type) {