Changeset: 9c31eda7800d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9c31eda7800d
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_time.c
Branch: default
Log Message:
More code cleanup, removed unused backend calls on date/time types
diffs (truncated from 948 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -4573,10 +4573,10 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "date", "command batcalc.date(X_1:bat[:date]):bat[:date] ",
"MTIMEdate_date_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"MTIMEdate_fromstr_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:timestamp]):bat[:date]
", "MTIMEtimestamp_extract_date_bulk;", "" ]
-[ "batcalc", "date", "command batcalc.date(X_1:bat[:oid]):bat[:date] ",
"batnil_2_date;", "" ]
-[ "batcalc", "date", "command batcalc.date(X_1:bat[:oid],
X_2:bat[:bit]):bat[:date] ", "batnil_ce_2_date;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"batstr_2_date;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str],
X_2:bat[:bit]):bat[:date] ", "batstr_ce_2_date;", "" ]
+[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid]):bat[:date] ",
"nil_2_date;", "" ]
+[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid],
X_2:bat[:bit]):bat[:date] ", "nil_2_date;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:daytime]):bat[:daytime] ",
"MTIMEdaytime_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:lng]):bat[:daytime] ",
"MTIMEdaytime_fromseconds_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:str]):bat[:daytime] ",
"MTIMEdaytime_fromstr_bulk;", "" ]
@@ -8611,8 +8611,8 @@ stdout of test 'MAL-signatures` in direc
[ "calc", "date", "command calc.date(X_1:date):date ",
"MTIMEdate_date;", "" ]
[ "calc", "date", "command calc.date(X_1:str):date ",
"MTIMEdate_fromstr;", "" ]
[ "calc", "date", "command calc.date(X_1:timestamp):date ",
"MTIMEtimestamp_extract_date;", "" ]
-[ "calc", "date", "command calc.date(X_1:void):date ", "nil_2_date;",
"" ]
-[ "calc", "date", "command calc.date(X_1:str):date ", "str_2_date;",
"" ]
+[ "calc", "date", "pattern calc.date(X_1:void):date ", "nil_2_date;",
"" ]
+[ "calc", "date", "pattern calc.date(X_1:str):date ", "str_2_date;",
"" ]
[ "calc", "daytime", "command calc.daytime(X_1:daytime):daytime ",
"MTIMEdaytime_daytime;", "" ]
[ "calc", "daytime", "command calc.daytime(X_1:lng):daytime ",
"MTIMEdaytime_fromseconds;", "" ]
[ "calc", "daytime", "command calc.daytime(X_1:str):daytime ",
"MTIMEdaytime_fromstr;", "" ]
@@ -9088,7 +9088,6 @@ stdout of test 'MAL-signatures` in direc
[ "calc", "sign", "pattern calc.sign(X_1:sht):bte ", "CMDvarSIGN;",
"" ]
[ "calc", "str", "pattern calc.str(X_1:any):str ",
"CMDvarCONVERT;", "" ]
[ "calc", "str", "command calc.str(X_1:blob):str ",
"SQLblob_2_str;", "" ]
-[ "calc", "str", "command calc.str(X_1:date):str ",
"SQLdate_2_str;", "" ]
[ "calc", "str", "pattern calc.str(X_1:int, X_2:int, X_3:int, X_4:int,
X_5:any_1, X_6:int):str ", "SQLstr_cast;", "" ]
[ "calc", "str", "command calc.str(X_1:uuid):str ",
"UUIDuuid2str;", "" ]
[ "calc", "strings", "command calc.strings(X_1:str):str ",
"STRstrings;", "" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -6272,10 +6272,10 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "date", "command batcalc.date(X_1:bat[:date]):bat[:date] ",
"MTIMEdate_date_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"MTIMEdate_fromstr_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:timestamp]):bat[:date]
", "MTIMEtimestamp_extract_date_bulk;", "" ]
-[ "batcalc", "date", "command batcalc.date(X_1:bat[:oid]):bat[:date] ",
"batnil_2_date;", "" ]
-[ "batcalc", "date", "command batcalc.date(X_1:bat[:oid],
X_2:bat[:bit]):bat[:date] ", "batnil_ce_2_date;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"batstr_2_date;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str],
X_2:bat[:bit]):bat[:date] ", "batstr_ce_2_date;", "" ]
+[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid]):bat[:date] ",
"nil_2_date;", "" ]
+[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid],
X_2:bat[:bit]):bat[:date] ", "nil_2_date;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:daytime]):bat[:daytime] ",
"MTIMEdaytime_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:lng]):bat[:daytime] ",
"MTIMEdaytime_fromseconds_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:str]):bat[:daytime] ",
"MTIMEdaytime_fromstr_bulk;", "" ]
@@ -11727,8 +11727,8 @@ stdout of test 'MAL-signatures` in direc
[ "calc", "date", "command calc.date(X_1:date):date ",
"MTIMEdate_date;", "" ]
[ "calc", "date", "command calc.date(X_1:str):date ",
"MTIMEdate_fromstr;", "" ]
[ "calc", "date", "command calc.date(X_1:timestamp):date ",
"MTIMEtimestamp_extract_date;", "" ]
-[ "calc", "date", "command calc.date(X_1:void):date ", "nil_2_date;",
"" ]
-[ "calc", "date", "command calc.date(X_1:str):date ", "str_2_date;",
"" ]
+[ "calc", "date", "pattern calc.date(X_1:void):date ", "nil_2_date;",
"" ]
+[ "calc", "date", "pattern calc.date(X_1:str):date ", "str_2_date;",
"" ]
[ "calc", "daytime", "command calc.daytime(X_1:daytime):daytime ",
"MTIMEdaytime_daytime;", "" ]
[ "calc", "daytime", "command calc.daytime(X_1:lng):daytime ",
"MTIMEdaytime_fromseconds;", "" ]
[ "calc", "daytime", "command calc.daytime(X_1:str):daytime ",
"MTIMEdaytime_fromstr;", "" ]
@@ -12413,7 +12413,6 @@ stdout of test 'MAL-signatures` in direc
[ "calc", "sign", "pattern calc.sign(X_1:sht):bte ", "CMDvarSIGN;",
"" ]
[ "calc", "str", "pattern calc.str(X_1:any):str ",
"CMDvarCONVERT;", "" ]
[ "calc", "str", "command calc.str(X_1:blob):str ",
"SQLblob_2_str;", "" ]
-[ "calc", "str", "command calc.str(X_1:date):str ",
"SQLdate_2_str;", "" ]
[ "calc", "str", "pattern calc.str(X_1:int, X_2:int, X_3:int, X_4:int,
X_5:any_1, X_6:int):str ", "SQLstr_cast;", "" ]
[ "calc", "str", "command calc.str(X_1:uuid):str ",
"UUIDuuid2str;", "" ]
[ "calc", "strings", "command calc.strings(X_1:str):str ",
"STRstrings;", "" ]
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5717,13 +5717,12 @@ static mel_func sql_init_funcs[] = {
command("sql", "date_trunc", date_trunc, false, "Truncate a timestamp to
(millennium, century,decade,year,quarter,month,week,day,hour,minute,second,
milliseconds,microseconds)", args(1,3,
arg("",timestamp),arg("scale",str),arg("v",timestamp))),
pattern("sql", "current_time", SQLcurrent_daytime, false, "Get the clients
current daytime", args(1,1, arg("",daytime))),
pattern("sql", "current_timestamp", SQLcurrent_timestamp, false, "Get the
clients current timestamp", args(1,1, arg("",timestamp))),
- command("calc", "date", nil_2_date, false, "cast to date", args(1,2,
arg("",date),arg("v",void))),
- command("batcalc", "date", batnil_2_date, false, "cast to date", args(1,2,
batarg("",date),batarg("v",oid))),
- command("batcalc", "date", batnil_ce_2_date, false, "cast to date", args(1,3,
batarg("",date),batarg("v",oid),batarg("r",bit))),
- command("calc", "date", str_2_date, false, "cast to date", args(1,2,
arg("",date),arg("v",str))),
+ pattern("calc", "date", nil_2_date, false, "cast to date", args(1,2,
arg("",date),arg("v",void))),
+ pattern("batcalc", "date", nil_2_date, false, "cast to date", args(1,2,
batarg("",date),batarg("v",oid))),
+ pattern("batcalc", "date", nil_2_date, false, "cast to date", args(1,3,
batarg("",date),batarg("v",oid),batarg("r",bit))),
+ pattern("calc", "date", str_2_date, false, "cast to date", args(1,2,
arg("",date),arg("v",str))),
command("batcalc", "date", batstr_2_date, false, "cast to date", args(1,2,
batarg("",date),batarg("v",str))),
command("batcalc", "date", batstr_ce_2_date, false, "cast to date", args(1,3,
batarg("",date),batarg("v",str),batarg("r",bit))),
- command("calc", "str", SQLdate_2_str, false, "cast date to str", args(1,2,
arg("",str),arg("v",date))),
command("calc", "blob", str_2_blob, false, "cast to blob", args(1,2,
arg("",blob),arg("v",str))),
command("batcalc", "blob", batstr_2_blob, false, "cast to blob", args(1,2,
batarg("",blob),batarg("v",str))),
command("batcalc", "blob", batstr_ce_2_blob, false, "cast to blob", args(1,3,
batarg("",blob),batarg("v",str),batarg("r",bit))),
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -226,26 +226,13 @@ sql5_export str str_2time_daytimetz(Clie
sql5_export str batstr_2time_daytime(bat *res, const bat *v, const int *len);
sql5_export str daytime_2time_daytime(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
-sql5_export str nil_2_timestamp(timestamp *res, const void *val);
-sql5_export str batnil_2_timestamp(bat *res, const bat *val);
-sql5_export str str_2_timestamp(timestamp *res, const str *val);
-sql5_export str batstr_2_timestamp(bat *res, const bat *val);
-
sql5_export str bat_date_trunc(bat *res, const str *scale, const bat *v);
sql5_export str date_trunc(timestamp *res, const str *scale, const timestamp
*v);
-sql5_export str nil_2_daytime(daytime *res, const void *val);
-sql5_export str batnil_2_daytime(bat *res, const bat *val);
-sql5_export str str_2_daytime(daytime *res, const str *val);
-sql5_export str batstr_2_daytime(bat *res, const bat *val);
-
-sql5_export str nil_2_date(date *res, const void *val);
-sql5_export str batnil_2_date(bat *res, const bat *val);
-sql5_export str batnil_ce_2_date(bat *res, const bat *val, const bat *r);
-sql5_export str str_2_date(date *res, const str *val);
+sql5_export str nil_2_date(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+sql5_export str str_2_date(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str batstr_2_date(bat *res, const bat *val);
sql5_export str batstr_ce_2_date(bat *res, const bat *val, const bat *r);
-sql5_export str SQLdate_2_str(str *res, const date *val);
sql5_export str str_2_blob(blob * *res, const str *val);
sql5_export str batstr_2_blob(bat *res, const bat *val);
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -940,9 +940,6 @@ comment "cast to date";
command batcalc.date( v:bat[:str], r:bat[:bit] ) :bat[:date]
address batstr_ce_2_date
comment "cast to date";
-command calc.str( v:date ) :str
-address SQLdate_2_str
-comment "cast date to str";
command calc.blob( v:str ) :blob
address str_2_blob
diff --git a/sql/backends/monet5/sql_cast.c b/sql/backends/monet5/sql_cast.c
--- a/sql/backends/monet5/sql_cast.c
+++ b/sql/backends/monet5/sql_cast.c
@@ -8,378 +8,11 @@
#include "monetdb_config.h"
#include "sql.h"
+#include "sql_cast.h"
#include "sql_result.h"
-#include "sql_cast.h"
-#include "sql_gencode.h"
-#include "sql_storage.h"
-#include "sql_scenario.h"
-#include "store_sequence.h"
-#include "sql_optimizer.h"
-#include "sql_datetime.h"
-#include "rel_optimizer.h"
-#include "rel_distribute.h"
-#include "rel_select.h"
-#include "rel_exp.h"
-#include "rel_dump.h"
-#include "opt_pipes.h"
-#include "clients.h"
#include "mal_instruction.h"
str
-nil_2_timestamp(timestamp *res, const void *val)
-{
- (void) val;
- *res = timestamp_nil;
- return MAL_SUCCEED;
-}
-
-str
-str_2_timestamp(timestamp *res, const str *val)
-{
- ptr p = NULL;
- size_t len = 0;
- ssize_t e;
- char buf[BUFSIZ];
-
- e = ATOMfromstr(TYPE_timestamp, &p, &len, *val, false);
- if (e < 0 || !p || (ATOMcmp(TYPE_timestamp, p,
ATOMnilptr(TYPE_timestamp)) == 0 && ATOMcmp(TYPE_str, *val,
ATOMnilptr(TYPE_str)) != 0)) {
- if (p)
- GDKfree(p);
- snprintf(buf, BUFSIZ, "Conversion of string '%s' failed", *val?
*val:"");
- throw(SQL, "timestamp", SQLSTATE(42000) "%s", buf);
- }
- *res = *(timestamp *) p;
- if (!ATOMextern(TYPE_timestamp)) {
- if (p)
- GDKfree(p);
- }
- return MAL_SUCCEED;
-}
-
-str
-batnil_2_timestamp(bat *res, const bat *bid)
-{
- BAT *b, *dst;
- BUN p, q;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc.nil_2_timestamp", SQLSTATE(HY005) "Cannot
access column descriptor");
- }
- dst = COLnew(b->hseqbase, TYPE_timestamp, BATcount(b), TRANSIENT);
- if (dst == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.2_timestamp", SQLSTATE(HY013) MAL_MALLOC_FAIL);
- }
- BATloop(b, p, q) {
- if (BUNappend(dst, ×tamp_nil, false) != GDK_SUCCEED) {
- BBPunfix(b->batCacheid);
- BBPreclaim(dst);
- throw(SQL, "sql.timestamp", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
- }
- }
- BBPkeepref(*res = dst->batCacheid);
- BBPunfix(b->batCacheid);
- return MAL_SUCCEED;
-}
-
-str
-batstr_2_timestamp(bat *res, const bat *bid)
-{
- BAT *b, *dst;
- BATiter bi;
- BUN p, q;
- char *msg = NULL;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc.str_2_timestamp", SQLSTATE(HY005) "Cannot
access column descriptor");
- }
- bi = bat_iterator(b);
- dst = COLnew(b->hseqbase, TYPE_timestamp, BATcount(b), TRANSIENT);
- if (dst == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.2_timestamp", SQLSTATE(HY013) MAL_MALLOC_FAIL);
- }
- BATloop(b, p, q) {
- str v = (str) BUNtvar(bi, p);
- timestamp r;
- msg = str_2_timestamp(&r, &v);
- if (msg) {
- BBPunfix(dst->batCacheid);
- BBPunfix(b->batCacheid);
- return msg;
- }
- if (BUNappend(dst, &r, false) != GDK_SUCCEED) {
- BBPunfix(b->batCacheid);
- BBPreclaim(dst);
- throw(SQL, "sql.timestamp", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
- }
- }
- BBPkeepref(*res = dst->batCacheid);
- BBPunfix(b->batCacheid);
- return msg;
-}
-
-str
-nil_2_daytime(daytime *res, const void *val)
-{
- (void) val;
- *res = daytime_nil;
- return MAL_SUCCEED;
-}
-
-str
-str_2_daytime(daytime *res, const str *val)
-{
- ptr p = NULL;
- size_t len = 0;
- ssize_t e;
- char buf[BUFSIZ];
-
- e = ATOMfromstr(TYPE_daytime, &p, &len, *val, false);
- if (e < 0 || !p || (ATOMcmp(TYPE_daytime, p, ATOMnilptr(TYPE_daytime))
== 0 && ATOMcmp(TYPE_str, *val, ATOMnilptr(TYPE_str)) != 0)) {
- if (p)
- GDKfree(p);
- snprintf(buf, BUFSIZ, "Conversion of string '%s' failed", *val?
*val:"");
- throw(SQL, "daytime", SQLSTATE(42000) "%s", buf);
- }
- *res = *(daytime *) p;
- if (!ATOMextern(TYPE_daytime)) {
- if (p)
- GDKfree(p);
- }
- return MAL_SUCCEED;
-}
-
-str
-batnil_2_daytime(bat *res, const bat *bid)
-{
- BAT *b, *dst;
- BUN p, q;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc.nil_2_daytime", SQLSTATE(HY005) "Cannot
access column descriptor");
- }
- dst = COLnew(b->hseqbase, TYPE_daytime, BATcount(b), TRANSIENT);
- if (dst == NULL) {
- BBPunfix(b->batCacheid);
- throw(SQL, "sql.2_daytime", SQLSTATE(HY013) MAL_MALLOC_FAIL);
- }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list