diff options
Diffstat (limited to 'src/backend/parser/catalog_utils.c')
-rw-r--r-- | src/backend/parser/catalog_utils.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/backend/parser/catalog_utils.c b/src/backend/parser/catalog_utils.c index 43419883411..043c2865060 100644 --- a/src/backend/parser/catalog_utils.c +++ b/src/backend/parser/catalog_utils.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.21 1997/08/19 21:32:12 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.22 1997/08/22 00:02:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -373,6 +373,7 @@ equivalentOpersAfterPromotion(CandidateList candidates) case FLOAT4OID: case INT4OID: case INT2OID: + case CASHOID: c->args[0] = FLOAT8OID; break; default: @@ -383,6 +384,7 @@ equivalentOpersAfterPromotion(CandidateList candidates) case FLOAT4OID: case INT4OID: case INT2OID: + case CASHOID: c->args[1] = FLOAT8OID; break; default: @@ -570,6 +572,7 @@ unary_oper_get_candidates(char *op, opKey[1].sk_argument = CharGetDatum(rightleft); /* currently, only "unknown" can be coerced */ + /* but we should allow types that are internally the same to be "coerced" */ if (typeId != UNKNOWNOID) { return 0; } @@ -956,7 +959,14 @@ can_coerce(int nargs, Oid *input_typeids, Oid *func_typeids) */ for (i=0; i<nargs; i++) { if (input_typeids[i] != func_typeids[i]) { - if (input_typeids[i] != UNKNOWNOID || func_typeids[i] == 0) + if ((input_typeids[i] == BPCHAROID && func_typeids[i] == TEXTOID) || + (input_typeids[i] == BPCHAROID && func_typeids[i] == VARCHAROID) || + (input_typeids[i] == VARCHAROID && func_typeids[i] == TEXTOID) || + (input_typeids[i] == VARCHAROID && func_typeids[i] == BPCHAROID) || + (input_typeids[i] == CASHOID && func_typeids[i] == INT4OID) || + (input_typeids[i] == INT4OID && func_typeids[i] == CASHOID)) + ; /* these are OK */ + else if (input_typeids[i] != UNKNOWNOID || func_typeids[i] == 0) return false; tp = get_id_type(input_typeids[i]); |