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]

Reply via email to