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:
parent
a8555ad4f9
commit
bc20c41275
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user