diff --git a/src/object/object_domain.c b/src/object/object_domain.c index 5f41a6749f5..6664ae27461 100644 --- a/src/object/object_domain.c +++ b/src/object/object_domain.c @@ -2242,6 +2242,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T } match = ((domain->precision == transient->precision) && (domain->collation_id == transient->collation_id) + && (domain->codeset == transient->codeset) && (domain->is_desc == transient->is_desc) && (domain->collation_flag == transient->collation_flag)); } @@ -2252,6 +2253,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T * string without modification. */ match = ((domain->precision >= transient->precision) && (domain->collation_id == transient->collation_id) + && (domain->codeset == transient->codeset) && (domain->is_desc == transient->is_desc) && (domain->collation_flag == transient->collation_flag)); } @@ -2266,6 +2268,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T * destination domain tolerance. */ match = ((domain->collation_id == transient->collation_id) && (domain->is_desc == transient->is_desc) + && (domain->codeset == transient->codeset) && (domain->collation_flag == transient->collation_flag)); } @@ -2379,6 +2382,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T } match = ((domain->precision == transient->precision) && (domain->collation_id == transient->collation_id) + && (domain->codeset == transient->codeset) && (domain->is_desc == transient->is_desc) && (domain->collation_flag == transient->collation_flag)); } @@ -2389,6 +2393,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T * in the DB_TYPE_CHAR case above. */ match = ((domain->collation_id == transient->collation_id) + && (domain->codeset == transient->codeset) && (transient->precision == 0 || (transient->precision == TP_FLOATING_PRECISION_VALUE) || domain->precision >= transient->precision) && (domain->is_desc == transient->is_desc) @@ -2419,6 +2424,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T } match = ((domain->precision == transient->precision) && (domain->collation_id == transient->collation_id) + && (domain->codeset == transient->codeset) && (domain->is_desc == transient->is_desc) && (domain->collation_flag == transient->collation_flag)); } @@ -2426,6 +2432,7 @@ tp_is_domain_cached (TP_DOMAIN * dlist, TP_DOMAIN * transient, TP_MATCH exact, T { /* see notes above under the DB_TYPE_VARCHAR clause */ match = ((domain->collation_id == transient->collation_id) && (domain->is_desc == transient->is_desc) + && (domain->codeset == transient->codeset) && (domain->collation_flag == transient->collation_flag)); } @@ -2681,7 +2688,8 @@ tp_domain_find_charbit (DB_TYPE type, int codeset, int collation_id, unsigned ch { break; /* found */ } - else if (dom->collation_id == collation_id && dom->collation_flag == collation_flag) + else if (dom->collation_id == collation_id && dom->collation_flag == collation_flag + && dom->codeset == codeset) { /* codeset should be the same if collations are equal */ assert (dom->codeset == codeset);