Fix bug in recent improvement to type resolution code. Forgot to retain

"best choice" type category when resolving UNKNOWN function and operator
 arguments. Thanks to Tom Lane for finding test case.
This commit is contained in:
Thomas G. Lockhart 2000-11-11 19:49:26 +00:00
parent a8555ad4f9
commit bc20c41275
2 changed files with 7 additions and 2 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.92 2000/11/06 15:42:30 thomas Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.93 2000/11/11 19:49:26 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@ -951,6 +951,8 @@ func_select_candidate(int nargs,
/* started out as unknown type, so give preference to string type, if available */
if (current_category == STRING_TYPE)
{
slot_category = current_category;
slot_type = current_type;
/* forget all previous candidates */
candidates = current_candidate;
last_candidate = current_candidate;

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.42 2000/11/07 16:01:01 thomas Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.43 2000/11/11 19:49:26 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@ -435,6 +435,7 @@ oper_select_candidate(int nargs,
current_typeids = current_candidate->args;
current_type = current_typeids[i];
current_category = TypeCategory(current_type);
/* first time through? Then we'll use this one for now */
if (slot_category == INVALID_TYPE)
{
slot_category = current_category;
@ -446,6 +447,8 @@ oper_select_candidate(int nargs,
/* started out as unknown type, so give preference to string type, if available */
if (current_category == STRING_TYPE)
{
slot_category = current_category;
slot_type = current_type;
/* forget all previous candidates */
candidates = current_candidate;
last_candidate = current_candidate;