Changeset: 7cd322939226 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7cd322939226
Modified Files:
sql/common/sql_types.c
Branch: interval-day-second
Log Message:
Refactor subtype_cmp
Should be functionally equivalent to the old logic, which was very
hard to understand.
diffs (46 lines):
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -352,22 +352,27 @@ subtype_cmp(sql_subtype *t1, sql_subtype
{
if (!t1->type || !t2->type)
return -1;
+ if (t1->type->eclass != t2->type->eclass)
+ return -1;
+ switch (t1->type->eclass) {
+ case EC_SEC:
+ case EC_MONTH:
+ return 0;
+ case EC_NUM:
+ break;
+ case EC_FLT:
+ if (t1->digits != t2->digits)
+ return -1;
+ break;
+ default:
+ if (t1->digits != t2->digits)
+ return -1;
+ if (t1->scale != t2->scale)
+ return -1;
+ break;
+ }
- if (t1->type->eclass == t2->type->eclass && t1->type->eclass == EC_SEC)
- return 0;
- if (t1->type->eclass == t2->type->eclass && t1->type->eclass ==
EC_MONTH)
- return 0;
- if ( !(t1->type->eclass == t2->type->eclass &&
- (EC_INTERVAL(t1->type->eclass) || t1->type->eclass == EC_NUM)) &&
- (t1->digits != t2->digits ||
- (!(t1->type->eclass == t2->type->eclass &&
- t1->type->eclass == EC_FLT) &&
- t1->scale != t2->scale)) )
- return -1;
-
- /* subtypes are only equal iff
- they map onto the same systemtype */
- return (type_cmp(t1->type, t2->type));
+ return type_cmp(t1->type, t2->type);
}
int
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]