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