Changeset: c2e4cf271f0c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2e4cf271f0c Modified Files: clients/Tests/exports.stable.out gdk/gdk_analytic_bounds.c monetdb5/modules/atoms/str.c monetdb5/modules/atoms/str.h monetdb5/modules/kernel/batstr.c sql/backends/monet5/sql_cast.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_time.c sql/backends/monet5/sql_upgrades.c sql/common/sql_types.c sql/server/rel_optimizer.c sql/server/rel_rewriter.c sql/server/rel_rewriter.h sql/server/rel_unnest.c sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h sql/storage/store.c sql/test/BugTracker-2013/Tests/timestamp.Bug-3401.stable.err sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128 sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err sql/test/miscellaneous/Tests/select_groupby.stable.err sql/test/pg_regress/Tests/date.stable.err sql/test/pg_regress/Tests/time.stable.err sql/test/pg_regress/Tests/timestamp.stable.err sql/test/pg_regress/Tests/timestamptz.stable.err sql/test/pg_regress/Tests/timetz.stable.err sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 sql/test/wlcr/Tests/wlr110.stable.err Branch: default Log Message:
Merged with oscar diffs (truncated from 2427 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1144,46 +1144,6 @@ str STRTail(str *res, const str *arg1, c str STRUpper(str *res, const str *arg1); str STRWChrAt(int *res, const str *arg1, const int *at); str STRascii(int *ret, const str *s); -str STRbatBytes(bat *ret, const bat *l); -str STRbatLength(bat *ret, const bat *l); -str STRbatLower(bat *ret, const bat *l); -str STRbatLpad2_bat_bat(bat *ret, const bat *l, const bat *n, const bat *l2); -str STRbatLpad2_bat_const(bat *ret, const bat *l, const bat *n, const str *s2); -str STRbatLpad2_const_bat(bat *ret, const bat *l, const int *n, const bat *l2); -str STRbatLpad2_const_const(bat *ret, const bat *l, const int *n, const str *s2); -str STRbatLpad_bat(bat *ret, const bat *l, const bat *n); -str STRbatLpad_const(bat *ret, const bat *l, const int *n); -str STRbatLtrim(bat *ret, const bat *l); -str STRbatLtrim2_bat(bat *ret, const bat *l, const bat *l2); -str STRbatLtrim2_const(bat *ret, const bat *l, const str *s2); -str STRbatPrefix(bat *ret, const bat *l, const bat *r); -str STRbatPrefixcst(bat *ret, const bat *l, const str *cst); -str STRbatRpad2_bat_bat(bat *ret, const bat *l, const bat *n, const bat *l2); -str STRbatRpad2_bat_const(bat *ret, const bat *l, const bat *n, const str *s2); -str STRbatRpad2_const_bat(bat *ret, const bat *l, const int *n, const bat *l2); -str STRbatRpad2_const_const(bat *ret, const bat *l, const int *n, const str *s2); -str STRbatRpad_bat(bat *ret, const bat *l, const bat *n); -str STRbatRpad_const(bat *ret, const bat *l, const int *n); -str STRbatRstrSearch(bat *ret, const bat *l, const bat *r); -str STRbatRstrSearchcst(bat *ret, const bat *l, const str *cst); -str STRbatRtrim(bat *ret, const bat *l); -str STRbatRtrim2_bat(bat *ret, const bat *l, const bat *l2); -str STRbatRtrim2_const(bat *ret, const bat *l, const str *s2); -str STRbatStrip(bat *ret, const bat *l); -str STRbatStrip2_bat(bat *ret, const bat *l, const bat *l2); -str STRbatStrip2_const(bat *ret, const bat *l, const str *s2); -str STRbatSubstitutecst(bat *ret, const bat *l, const str *arg2, const str *arg3, const bit *rep); -str STRbatSuffix(bat *ret, const bat *l, const bat *r); -str STRbatSuffixcst(bat *ret, const bat *l, const str *cst); -str STRbatTail(bat *ret, const bat *l, const bat *r); -str STRbatTailcst(bat *ret, const bat *l, const int *cst); -str STRbatUpper(bat *ret, const bat *l); -str STRbatWChrAt(bat *ret, const bat *l, const bat *r); -str STRbatWChrAtcst(bat *ret, const bat *l, const int *cst); -str STRbatstrSearch(bat *ret, const bat *l, const bat *r); -str STRbatstrSearchcst(bat *ret, const bat *l, const str *cst); -str STRbatsubstring(bat *ret, const bat *l, const bat *r, const bat *t); -str STRbatsubstringcst(bat *ret, const bat *bid, const int *start, const int *length); str STRinsert(str *ret, const str *s, const int *start, const int *l, const str *s2); str STRlikewrap(bit *ret, const str *s, const str *pat, const str *esc); str STRlikewrap2(bit *ret, const str *s, const str *pat); @@ -1872,8 +1832,6 @@ str stopTrace(Client cntxt); str stoptraceRef; void strAfterCall(ValPtr v, ValPtr bak); void strBeforeCall(ValPtr v, ValPtr bak); -str strEpilogue(void *ret); -str strPrelude(void *ret); str strRef; str streamsRef; str stringdiff_impl(int *res, str *s1, str *s2); diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c --- a/gdk/gdk_analytic_bounds.c +++ b/gdk/gdk_analytic_bounds.c @@ -548,10 +548,7 @@ #define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_GROUPS(IMP, LIMIT, TPE) \ do { \ - switch (tp1) { \ - case TYPE_bit: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bit, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ - break; \ + switch (ATOMbasetype(tp1)) { \ case TYPE_bte: \ ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ break; \ diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c --- a/monetdb5/modules/atoms/str.c +++ b/monetdb5/modules/atoms/str.c @@ -2935,7 +2935,7 @@ UTF8_assert(const char *s) #define UTF8_assert(s) ((void) 0) #endif -str +static str strPrelude(void *ret) { (void) ret; @@ -2984,7 +2984,7 @@ strPrelude(void *ret) throw(MAL, "str.prelude", GDK_EXCEPTION); } -str +static str strEpilogue(void *ret) { (void) ret; @@ -3287,7 +3287,7 @@ convertCase(BAT *from, BAT *to, str *res /* * The SQL like function return a boolean */ -static int +static bool STRlike(const char *s, const char *pat, const char *esc) { const char *t, *p; @@ -3297,7 +3297,7 @@ STRlike(const char *s, const char *pat, if (esc && *p == *esc) { p++; if (*p != *t) - return FALSE; + return false; t++; } else if (*p == '_') t++; @@ -3306,34 +3306,40 @@ STRlike(const char *s, const char *pat, while (*p == '%') p++; if (*p == 0) - return TRUE; /* tail is acceptable */ + return true; /* tail is acceptable */ for (; *p && *t; t++) if (STRlike(t, p, esc)) - return TRUE; + return true; if (*p == 0 && *t == 0) - return TRUE; - return FALSE; + return true; + return false; } else if (*p == *t) t++; else - return FALSE; + return false; } if (*p == '%' && *(p + 1) == 0) - return TRUE; + return true; return *t == 0 && *p == 0; } str STRlikewrap(bit *ret, const str *s, const str *pat, const str *esc) { - *ret = STRlike(*s, *pat, *esc); + if (strNil(*s) || strNil(*pat) || strNil(*esc)) + *ret = bit_nil; + else + *ret = (bit) STRlike(*s, *pat, *esc); return MAL_SUCCEED; } str STRlikewrap2(bit *ret, const str *s, const str *pat) { - *ret = STRlike(*s, *pat, NULL); + if (strNil(*s) || strNil(*pat)) + *ret = bit_nil; + else + *ret = (bit) STRlike(*s, *pat, NULL); return MAL_SUCCEED; } diff --git a/monetdb5/modules/atoms/str.h b/monetdb5/modules/atoms/str.h --- a/monetdb5/modules/atoms/str.h +++ b/monetdb5/modules/atoms/str.h @@ -13,8 +13,6 @@ #include "mal_exception.h" #include <ctype.h> -mal_export str strPrelude(void *ret); -mal_export str strEpilogue(void *ret); mal_export str STRtostr(str *res, const str *src); mal_export str STRConcat(str *res, const str *val1, const str *val2); mal_export str STRLength(int *res, const str *arg1); diff --git a/monetdb5/modules/kernel/batstr.c b/monetdb5/modules/kernel/batstr.c --- a/monetdb5/modules/kernel/batstr.c +++ b/monetdb5/modules/kernel/batstr.c @@ -23,52 +23,6 @@ #include "mal_exception.h" #include "str.h" -mal_export str STRbatPrefix(bat *ret, const bat *l, const bat *r); -mal_export str STRbatPrefixcst(bat *ret, const bat *l, const str *cst); -mal_export str STRbatSuffix(bat *ret, const bat *l, const bat *r); -mal_export str STRbatSuffixcst(bat *ret, const bat *l, const str *cst); -mal_export str STRbatstrSearch(bat *ret, const bat *l, const bat *r); -mal_export str STRbatstrSearchcst(bat *ret, const bat *l, const str *cst); -mal_export str STRbatRstrSearch(bat *ret, const bat *l, const bat *r); -mal_export str STRbatRstrSearchcst(bat *ret, const bat *l, const str *cst); -mal_export str STRbatTail(bat *ret, const bat *l, const bat *r); -mal_export str STRbatTailcst(bat *ret, const bat *l, const int *cst); -mal_export str STRbatWChrAt(bat *ret, const bat *l, const bat *r); -mal_export str STRbatWChrAtcst(bat *ret, const bat *l, const int *cst); -mal_export str STRbatSubstitutecst(bat *ret, const bat *l, const str *arg2, const str *arg3, const bit *rep); - -mal_export str STRbatLower(bat *ret, const bat *l); -mal_export str STRbatUpper(bat *ret, const bat *l); -mal_export str STRbatStrip(bat *ret, const bat *l); -mal_export str STRbatLtrim(bat *ret, const bat *l); -mal_export str STRbatRtrim(bat *ret, const bat *l); -mal_export str STRbatStrip2_const(bat *ret, const bat *l, const str *s2); -mal_export str STRbatLtrim2_const(bat *ret, const bat *l, const str *s2); -mal_export str STRbatRtrim2_const(bat *ret, const bat *l, const str *s2); -mal_export str STRbatStrip2_bat(bat *ret, const bat *l, const bat *l2); -mal_export str STRbatLtrim2_bat(bat *ret, const bat *l, const bat *l2); -mal_export str STRbatRtrim2_bat(bat *ret, const bat *l, const bat *l2); - -mal_export str STRbatLpad_const(bat *ret, const bat *l, const int *n); -mal_export str STRbatRpad_const(bat *ret, const bat *l, const int *n); -mal_export str STRbatLpad_bat(bat *ret, const bat *l, const bat *n); -mal_export str STRbatRpad_bat(bat *ret, const bat *l, const bat *n); -mal_export str STRbatLpad2_const_const(bat *ret, const bat *l, const int *n, const str *s2); -mal_export str STRbatRpad2_const_const(bat *ret, const bat *l, const int *n, const str *s2); -mal_export str STRbatLpad2_bat_const(bat *ret, const bat *l, const bat *n, const str *s2); -mal_export str STRbatRpad2_bat_const(bat *ret, const bat *l, const bat *n, const str *s2); -mal_export str STRbatLpad2_const_bat(bat *ret, const bat *l, const int *n, const bat *l2); -mal_export str STRbatRpad2_const_bat(bat *ret, const bat *l, const int *n, const bat *l2); -mal_export str STRbatLpad2_bat_bat(bat *ret, const bat *l, const bat *n, const bat *l2); -mal_export str STRbatRpad2_bat_bat(bat *ret, const bat *l, const bat *n, const bat *l2); - -mal_export str STRbatLength(bat *ret, const bat *l); -mal_export str STRbatBytes(bat *ret, const bat *l); - -mal_export str STRbatsubstringcst(bat *ret, const bat *bid, const int *start, const int *length); -mal_export str STRbatsubstring(bat *ret, const bat *l, const bat *r, const bat *t); - - #define prepareOperand(X,Y,Z) \ if( (X= BATdescriptor(*Y)) == NULL ) \ throw(MAL, Z, SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); @@ -151,13 +105,13 @@ bunins_failed: throw(MAL, name, OPERATION_FAILED " During bulk operation"); } -str +static str STRbatLength(bat *ret, const bat *l) { return do_batstr_int(ret, l, "batstr.Length", STRLength); } -str +static str STRbatBytes(bat *ret, const bat *l) { return do_batstr_int(ret, l, "batstr.Bytes", STRBytes); @@ -642,139 +596,139 @@ do_batstr_batint_batstr_str(bat *ret, co throw(MAL, name, OPERATION_FAILED " During bulk operation"); } -str +static str STRbatLower(bat *ret, const bat *l) { return do_batstr_str(ret, l, "batstr.Lower", STRLower); } -str +static str STRbatUpper(bat *ret, const bat *l) { return do_batstr_str(ret, l, "batstr.Upper", STRUpper); } -str +static str STRbatStrip(bat *ret, const bat *l) { return do_batstr_str(ret, l, "batstr.Strip", STRStrip); } -str +static str STRbatLtrim(bat *ret, const bat *l) { return do_batstr_str(ret, l, "batstr.Ltrim", STRLtrim); } -str +static str STRbatRtrim(bat *ret, const bat *l) { return do_batstr_str(ret, l, "batstr.Rtrim", STRRtrim); } -str +static str STRbatStrip2_const(bat *ret, const bat *l, const str *s2) { return do_batstr_conststr_str(ret, l, s2, "batstr.Strip", STRStrip2); } -str +static str STRbatLtrim2_const(bat *ret, const bat *l, const str *s2) { return do_batstr_conststr_str(ret, l, s2, "batstr.Ltrim", STRLtrim2); } -str _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list