Changeset: 1a6a69063cab for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1a6a69063cab
Modified Files:
        gdk/gdk_bbp.c
        sql/server/sql_atom.c
        testing/mktest.py
        testing/sqllogictest.py
Branch: oscar
Log Message:

Merged with Jun2020


diffs (truncated from 338 to 300 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -504,6 +504,12 @@ fixdateheap(BAT *b, const char *anme)
                bnme = nme;
        sprintf(filename, "BACKUP%c%s", DIR_SEP, bnme);
 
+       /* we don't maintain index structures */
+       HASHdestroy(b);
+       IMPSdestroy(b);
+       OIDXdestroy(b);
+       PROPdestroy(b);
+
        /* make backup of heap */
        if (GDKmove(b->theap.farmid, srcdir, bnme, "tail", BAKDIR, bnme, 
"tail") != GDK_SUCCEED) {
                GDKfree(srcdir);
@@ -661,18 +667,11 @@ fixdatebats(void)
                        }
                        fclose(fp);
                }
-               /* The date type is not known in GDK when reading the BBP */
-               if (b->ttype < 0) {
-                       const char *anme;
-
-                       /* as yet unknown tail column type */
-                       anme = ATOMunknown_name(b->ttype);
-                       /* known string types */
-                       if ((strcmp(anme, "date") == 0 ||
-                            strcmp(anme, "timestamp") == 0 ||
-                            strcmp(anme, "daytime") == 0) &&
-                           fixdateheap(b, anme) != GDK_SUCCEED)
-                               return GDK_FAIL;
+               if ((b->ttype == TYPE_date ||
+                    b->ttype == TYPE_timestamp ||
+                    b->ttype == TYPE_daytime) &&
+                   fixdateheap(b, ATOMname(b->ttype)) != GDK_SUCCEED) {
+                       return GDK_FAIL;
                }
        }
        return GDK_SUCCEED;
diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c
--- a/sql/server/sql_atom.c
+++ b/sql/server/sql_atom.c
@@ -1337,67 +1337,7 @@ atom_is_zero(atom *a)
 {
        if (a->isnull)
                return 0;
-       switch (a->tpe.type->localtype) {
-       case TYPE_bte:
-               return a->data.val.btval == 0;
-       case TYPE_sht:
-               return a->data.val.shval == 0;
-       case TYPE_int:
-               return a->data.val.ival == 0;
-       case TYPE_lng:
-               return a->data.val.lval == 0;
-#ifdef HAVE_HGE
-       case TYPE_hge:
-               return a->data.val.hval == 0;
-#endif
-       case TYPE_flt:
-               return a->data.val.fval == 0;
-       case TYPE_dbl:
-               return a->data.val.dval == 0;
-       default:
-               break;
-       }
-       return 0;
-}
-
-int
-atom_is_true(atom *a)
-{
-       if (a->isnull)
-               return 0;
-       switch (a->tpe.type->localtype) {
-       case TYPE_bit:
-               return a->data.val.btval != 0;
-       case TYPE_bte:
-               return a->data.val.btval != 0;
-       case TYPE_sht:
-               return a->data.val.shval != 0;
-       case TYPE_int:
-               return a->data.val.ival != 0;
-       case TYPE_lng:
-               return a->data.val.lval != 0;
-#ifdef HAVE_HGE
-       case TYPE_hge:
-               return a->data.val.hval != 0;
-#endif
-       case TYPE_flt:
-               return a->data.val.fval != 0;
-       case TYPE_dbl:
-               return a->data.val.dval != 0;
-       default:
-               break;
-       }
-       return 0;
-}
-
-int
-atom_is_false( atom *a )
-{
-       if (a->isnull)
-               return 0;
-       switch(a->tpe.type->localtype) {
-       case TYPE_bit:
-               return a->data.val.btval == 0;
+       switch (ATOMstorage(a->tpe.type->localtype)) {
        case TYPE_bte:
                return a->data.val.btval == 0;
        case TYPE_sht:
@@ -1415,9 +1355,66 @@ atom_is_false( atom *a )
        case TYPE_dbl:
                return a->data.val.dval == 0;
        default:
-               break;
+               return 0;
        }
-       return 0;
+}
+
+int
+atom_is_true(atom *a)
+{
+       if (a->isnull)
+               return 0;
+       switch (ATOMstorage(a->tpe.type->localtype)) {
+       case TYPE_bte:
+               return a->data.val.btval != 0;
+       case TYPE_sht:
+               return a->data.val.shval != 0;
+       case TYPE_int:
+               return a->data.val.ival != 0;
+       case TYPE_lng:
+               return a->data.val.lval != 0;
+#ifdef HAVE_HGE
+       case TYPE_hge:
+               return a->data.val.hval != 0;
+#endif
+       case TYPE_flt:
+               return a->data.val.fval != 0;
+       case TYPE_dbl:
+               return a->data.val.dval != 0;
+       case TYPE_str:
+               return strcmp(a->data.val.sval, "") != 0;
+       default:
+               return 0;
+       }
+}
+
+int
+atom_is_false(atom *a)
+{
+       if (a->isnull)
+               return 0;
+       switch (ATOMstorage(a->tpe.type->localtype)) {
+       case TYPE_bte:
+               return a->data.val.btval == 0;
+       case TYPE_sht:
+               return a->data.val.shval == 0;
+       case TYPE_int:
+               return a->data.val.ival == 0;
+       case TYPE_lng:
+               return a->data.val.lval == 0;
+#ifdef HAVE_HGE
+       case TYPE_hge:
+               return a->data.val.hval == 0;
+#endif
+       case TYPE_flt:
+               return a->data.val.fval == 0;
+       case TYPE_dbl:
+               return a->data.val.dval == 0;
+       case TYPE_str:
+               return strcmp(a->data.val.sval, "") == 0;
+       default:
+               return 0;
+       }
 }
 
 atom *
@@ -1426,79 +1423,43 @@ atom_zero_value(sql_allocator *sa, sql_s
        void *ret = NULL;
        atom *res = NULL;
 
+       bte bval = 0;
+       sht sval = 0;
+       int ival = 0;
+       lng lval = 0;
 #ifdef HAVE_HGE
        hge hval = 0;
 #endif
-       lng lval = 0;
-       int ival = 0;
-       sht sval = 0;
-       bte bbval = 0;
-       bit bval = 0;
        flt fval = 0;
        dbl dval = 0;
 
-       switch (tpe->type->eclass) {
-               case EC_BIT:
-               {
-                       ret = &bval;
-                       break;
-               }
-               case EC_POS:
-               case EC_NUM:
-               case EC_DEC:
-               case EC_SEC:
-               case EC_MONTH:
-                       switch (tpe->type->localtype) {
+       switch (ATOMstorage(tpe->type->localtype)) {
+       case TYPE_bte:
+               ret = &bval;
+               break;
+       case TYPE_sht:
+               ret = &sval;
+               break;
+       case TYPE_int:
+               ret = &ival;
+               break;
+       case TYPE_lng:
+               ret = &lval;
+               break;
 #ifdef HAVE_HGE
-                               case TYPE_hge:
-                               {
-                                       ret = &hval;
-                                       break;
-                               }
+       case TYPE_hge:
+               ret = &hval;
+               break;
 #endif
-                               case TYPE_lng:
-                               {
-                                       ret = &lval;
-                                       break;
-                               }
-                               case TYPE_int:
-                               {
-                                       ret = &ival;
-                                       break;
-                               }
-                               case TYPE_sht:
-                               {
-                                       ret = &sval;
-                                       break;
-                               }
-                               case TYPE_bte:
-                               {
-                                       ret = &bbval;
-                                       break;
-                               }
-                               default:
-                                       break;
-                       }
-                       break;
-               case EC_FLT:
-                       switch (tpe->type->localtype) {
-                               case TYPE_flt:
-                               {
-                                       ret = &fval;
-                                       break;
-                               }
-                               case TYPE_dbl:
-                               {
-                                       ret = &dval;
-                                       break;
-                               }
-                               default:
-                                       break;
-                       }
-                       break;
-               default:
-                       break;
-       } //no support for strings and blobs zero value
+       case TYPE_flt:
+               ret = &fval;
+               break;
+       case TYPE_dbl:
+               ret = &dval;
+               break;
+       default: /* no support for strings and blobs zero value */
+               break;
+       }
 
        if (ret != NULL) {
                res = atom_create(sa);
diff --git a/testing/mktest.py b/testing/mktest.py
--- a/testing/mktest.py
+++ b/testing/mktest.py
@@ -107,17 +107,14 @@ while True:
                 data = crs.fetchall()
                 if opts.results:
                     for row in data:
-                        print(*row, sep='|', file=opts.results)
-                        # sep='[ '
-                        # for col in row:
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to