Changeset: 6c025ed06ac6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6c025ed06ac6
Modified Files:
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/mtime.h
sql/common/sql_types.c
Branch: extract_types
Log Message:
Assign to bte instead of int, preventing explosion to hge int when doing
arithmetics.
diffs (102 lines):
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -578,7 +578,7 @@ func1(MTIMEdate_extract_quarter, "date_q
date_quarter, SETFLAGS, func1_noexcept,
DEC_VAR_R, DEC_VAR_R,
INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR)
-func1(MTIMEdate_extract_month, "date_month", date, int,
+func1(MTIMEdate_extract_month, "date_month", date, bte,
date_month, SETFLAGS, func1_noexcept,
DEC_VAR_R, DEC_VAR_R,
INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR)
@@ -1149,9 +1149,9 @@ static mel_func mtime_init_funcs[] = {
command("mtime", "quarter", MTIMEdate_extract_quarter, false, "extracts
quarter from date", args(1,2, arg("",int),arg("d",date))),
pattern("batmtime", "quarter", MTIMEdate_extract_quarter_bulk, false, "",
args(1,2, batarg("",int),batarg("d",date))),
pattern("batmtime", "quarter", MTIMEdate_extract_quarter_bulk, false, "",
args(1,3, batarg("",int),batarg("d",date),batarg("s",oid))),
- command("mtime", "month", MTIMEdate_extract_month, false, "extracts month
from date", args(1,2, arg("",int),arg("d",date))),
- pattern("batmtime", "month", MTIMEdate_extract_month_bulk, false, "",
args(1,2, batarg("",int),batarg("d",date))),
- pattern("batmtime", "month", MTIMEdate_extract_month_bulk, false, "",
args(1,3, batarg("",int),batarg("d",date),batarg("s",oid))),
+ command("mtime", "month", MTIMEdate_extract_month, false, "extracts month
from date", args(1,2, arg("",bte),arg("d",date))),
+ pattern("batmtime", "month", MTIMEdate_extract_month_bulk, false, "",
args(1,2, batarg("",bte),batarg("d",date))),
+ pattern("batmtime", "month", MTIMEdate_extract_month_bulk, false, "",
args(1,3, batarg("",bte),batarg("d",date),batarg("s",oid))),
command("mtime", "day", MTIMEdate_extract_day, false, "extracts day from date
", args(1,2, arg("",int),arg("d",date))),
pattern("batmtime", "day", MTIMEdate_extract_day_bulk, false, "", args(1,2,
batarg("",int),batarg("d",date))),
pattern("batmtime", "day", MTIMEdate_extract_day_bulk, false, "", args(1,3,
batarg("",int),batarg("d",date),batarg("s",oid))),
@@ -1260,9 +1260,9 @@ static mel_func mtime_init_funcs[] = {
command("mtime", "quarter", MTIMEtimestamp_quarter, false, "", args(1,2,
arg("",int),arg("t",timestamp))),
pattern("batmtime", "quarter", MTIMEtimestamp_quarter_bulk, false, "",
args(1,2, batarg("",int),batarg("t",timestamp))),
pattern("batmtime", "quarter", MTIMEtimestamp_quarter_bulk, false, "",
args(1,3, batarg("",int),batarg("t",timestamp),batarg("s",oid))),
- command("mtime", "month", MTIMEtimestamp_month, false, "", args(1,2,
arg("",int),arg("t",timestamp))),
- pattern("batmtime", "month", MTIMEtimestamp_month_bulk, false, "", args(1,2,
batarg("",int),batarg("t",timestamp))),
- pattern("batmtime", "month", MTIMEtimestamp_month_bulk, false, "", args(1,3,
batarg("",int),batarg("t",timestamp),batarg("s",oid))),
+ command("mtime", "month", MTIMEtimestamp_month, false, "", args(1,2,
arg("",bte),arg("t",timestamp))),
+ pattern("batmtime", "month", MTIMEtimestamp_month_bulk, false, "", args(1,2,
batarg("",bte),batarg("t",timestamp))),
+ pattern("batmtime", "month", MTIMEtimestamp_month_bulk, false, "", args(1,3,
batarg("",bte),batarg("t",timestamp),batarg("s",oid))),
command("mtime", "day", MTIMEtimestamp_day, false, "", args(1,2,
arg("",int),arg("t",timestamp))),
pattern("batmtime", "day", MTIMEtimestamp_day_bulk, false, "", args(1,2,
batarg("",int),batarg("t",timestamp))),
pattern("batmtime", "day", MTIMEtimestamp_day_bulk, false, "", args(1,3,
batarg("",int),batarg("t",timestamp),batarg("s",oid))),
@@ -1281,9 +1281,9 @@ static mel_func mtime_init_funcs[] = {
command("mtime", "year", MTIMEsql_year, false, "", args(1,2,
arg("",int),arg("months",int))),
pattern("batmtime", "year", MTIMEsql_year_bulk, false, "", args(1,2,
batarg("",int),batarg("months",int))),
pattern("batmtime", "year", MTIMEsql_year_bulk, false, "", args(1,3,
batarg("",int),batarg("months",int),batarg("s",oid))),
- command("mtime", "month", MTIMEsql_month, false, "", args(1,2,
arg("",int),arg("months",int))),
- pattern("batmtime", "month", MTIMEsql_month_bulk, false, "", args(1,2,
batarg("",int),batarg("months",int))),
- pattern("batmtime", "month", MTIMEsql_month_bulk, false, "", args(1,3,
batarg("",int),batarg("months",int),batarg("s",oid))),
+ command("mtime", "month", MTIMEsql_month, false, "", args(1,2,
arg("",bte),arg("months",int))),
+ pattern("batmtime", "month", MTIMEsql_month_bulk, false, "", args(1,2,
batarg("",bte),batarg("months",int))),
+ pattern("batmtime", "month", MTIMEsql_month_bulk, false, "", args(1,3,
batarg("",bte),batarg("months",int),batarg("s",oid))),
command("mtime", "day", MTIMEsql_day, false, "", args(1,2,
arg("",lng),arg("msecs",lng))),
pattern("batmtime", "day", MTIMEsql_day_bulk, false, "", args(1,2,
batarg("",lng),batarg("msecs",lng))),
pattern("batmtime", "day", MTIMEsql_day_bulk, false, "", args(1,3,
batarg("",lng),batarg("msecs",lng),batarg("s",oid))),
diff --git a/monetdb5/modules/atoms/mtime.h b/monetdb5/modules/atoms/mtime.h
--- a/monetdb5/modules/atoms/mtime.h
+++ b/monetdb5/modules/atoms/mtime.h
@@ -177,7 +177,7 @@ timestamp_century(const timestamp t)
#define timestamp_to_msec_since_epoch(t) is_timestamp_nil(t) ? lng_nil :
(timestamp_diff(t, unixepoch) / 1000)
#define sql_year(m) is_int_nil(m) ? int_nil : m / 12
-#define sql_month(m) is_int_nil(m) ? int_nil : m % 12
+#define sql_month(m) is_bte_nil(m) ? bte_nil : m % 12
#define sql_day(m) is_lng_nil(m) ? lng_nil : m / (24*60*60*1000)
#define sql_hours(m) is_lng_nil(m) ? int_nil : (int) ((m % (24*60*60*1000)) /
(60*60*1000))
#define sql_minutes(m) is_lng_nil(m) ? int_nil : (int) ((m % (60*60*1000)) /
(60*1000))
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
@@ -1353,7 +1353,7 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "decade", "mtime", "decade", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, DTE);
sql_create_func(sa, "year", "mtime", "year", FALSE, FALSE, SCALE_FIX,
0, INT, 1, DTE);
sql_create_func(sa, "quarter", "mtime", "quarter", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, DTE);
- sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, INT, 1, DTE);
+ sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, BTE, 1, DTE);
sql_create_func(sa, "day", "mtime", "day", FALSE, FALSE, SCALE_FIX, 0,
INT, 1, DTE);
sql_create_func(sa, "dayofyear", "mtime", "dayofyear", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, DTE);
sql_create_func(sa, "weekofyear", "mtime", "weekofyear", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, DTE);
@@ -1376,7 +1376,7 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "decade", "mtime", "decade", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMP);
sql_create_func(sa, "year", "mtime", "year", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMP);
sql_create_func(sa, "quarter", "mtime", "quarter", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMP);
- sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMP);
+ sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, BTE, 1, TMESTAMP);
sql_create_func(sa, "day", "mtime", "day", FALSE, FALSE, SCALE_FIX, 0,
INT, 1, TMESTAMP);
sql_create_func(sa, "hour", "mtime", "hours", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMP);
sql_create_func(sa, "minute", "mtime", "minutes", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMP);
@@ -1387,7 +1387,7 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "decade", "mtime", "decade", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMPTZ);
sql_create_func(sa, "year", "mtime", "year", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMPTZ);
sql_create_func(sa, "quarter", "mtime", "quarter", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMPTZ);
- sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMPTZ);
+ sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE, SCALE_FIX,
0, BTE, 1, TMESTAMPTZ);
sql_create_func(sa, "day", "mtime", "day", FALSE, FALSE, SCALE_FIX, 0,
INT, 1, TMESTAMPTZ);
sql_create_func(sa, "hour", "mtime", "hours", FALSE, FALSE, SCALE_FIX,
0, INT, 1, TMESTAMPTZ);
sql_create_func(sa, "minute", "mtime", "minutes", FALSE, FALSE,
SCALE_FIX, 0, INT, 1, TMESTAMPTZ);
@@ -1395,7 +1395,7 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "epoch_ms", "mtime", "epoch_ms", FALSE, FALSE,
SCALE_NONE, 3, BigDEC, 1, TMESTAMPTZ);
sql_create_func(sa, "year", "mtime", "year", FALSE, FALSE, SCALE_NONE,
0, INT, 1, MONINT);
- sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, MONINT);
+ sql_create_func(sa, "month", "mtime", "month", FALSE, FALSE,
SCALE_NONE, 0, BTE, 1, MONINT);
sql_create_func(sa, "day", "mtime", "day", FALSE, FALSE, SCALE_NONE, 0,
LNG, 1, DAYINT);
sql_create_func(sa, "hour", "mtime", "hours", FALSE, FALSE, SCALE_NONE,
0, INT, 1, DAYINT);
sql_create_func(sa, "minute", "mtime", "minutes", FALSE, FALSE,
SCALE_NONE, 0, INT, 1, DAYINT);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]