From ec06cffc522f97be4666e1de5363952e473b6fd7 Mon Sep 17 00:00:00 2001 From: Byungwook Kim Date: Mon, 22 Apr 2024 11:08:57 +0900 Subject: [PATCH] [CBRD-25053] [Regression] Core dumped in tp_is_domain_cached at src/object/object_domain.c:2276 (#4765) (#5138) http://jira.cubrid.org/browse/CBRD-25053 This is a backport for 11.3 patch. --- src/object/object_domain.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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);