Changeset: 41f5ebb486fa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/41f5ebb486fa
Modified Files:
        gdk/gdk_time.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/mtime.h
        sql/server/rel_statistics_functions.c
Branch: default
Log Message:

Some cleanup to time-related code.  Nothing fundamental.


diffs (truncated from 1028 to 300 lines):

diff --git a/gdk/gdk_time.c b/gdk/gdk_time.c
--- a/gdk/gdk_time.c
+++ b/gdk/gdk_time.c
@@ -27,15 +27,15 @@
  * (i.e. 0mmmmmmmmmmmmmmmmmmmmmdddddttttttttttttttttttttttttttttttttttttt)
  */
 
-#define YEAR_MIN       (-4712) /* 4713 BC */
+#define YEAR_OFFSET    4712
+#define YEAR_MIN       (-YEAR_OFFSET)  /* 4713 BC */
 
-#define YEAR_OFFSET    (-YEAR_MIN)
 #define DTDAY_WIDTH    5       /* 1..28/29/30/31, depending on month/year */
 #define DTDAY_SHIFT    0
 #define DTMONTH_WIDTH  21      /* enough for 174761 years (and 8 months) */
-#define DTMONTH_SHIFT  (DTDAY_WIDTH+DTDAY_SHIFT)
+#define DTMONTH_SHIFT  (DTDAY_WIDTH + DTDAY_SHIFT)
 
-#define YEAR_MAX       (YEAR_MIN+(1<<DTMONTH_WIDTH)/12-1)
+#define YEAR_MAX       (YEAR_MIN + (1 << DTMONTH_WIDTH) / 12 - 1)
 
 static const int leapdays[13] = { /* days per month in leap year */
        0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
@@ -137,25 +137,30 @@ __attribute__((__const__))
 static inline daytime
 ts_time(timestamp ts)
 {
-       return (daytime) (((uint64_t) ts >> TSTIME_SHIFT) & ((LL_CONSTANT(1) << 
TSTIME_WIDTH) - 1));
+       return (daytime) (((uint64_t) ts >> TSTIME_SHIFT)
+                         & ((LL_CONSTANT(1) << TSTIME_WIDTH) - 1));
 }
 
 __attribute__((__const__))
 static inline date
 ts_date(timestamp ts)
 {
-       return (date) (((uint64_t) ts >> TSDATE_SHIFT) & ((1 << TSDATE_WIDTH) - 
1));
+       return (date) (((uint64_t) ts >> TSDATE_SHIFT)
+                      & ((1 << TSDATE_WIDTH) - 1));
 }
 
 __attribute__((__const__))
 static inline timestamp
 mktimestamp(date d, daytime t)
 {
-       return (timestamp) (((uint64_t) d << TSDATE_SHIFT) |
-                           ((uint64_t) t << TSTIME_SHIFT));
+       return (timestamp) (((uint64_t) d << TSDATE_SHIFT)
+                           | ((uint64_t) t << TSTIME_SHIFT));
 }
 
-const timestamp unixepoch = (((((timestamp) 1970 + YEAR_OFFSET) * 12) << 
DTMONTH_SHIFT) | ((timestamp) 1 << DTDAY_SHIFT)) << TSDATE_SHIFT; /* 
mktimestamp(mkdate(1970, 1, 1), mkdaytime(0, 0, 0, 0)) */
+/* mktimestamp(mkdate(1970, 1, 1), mkdaytime(0, 0, 0, 0)) */
+const timestamp unixepoch =
+       (((((timestamp) 1970 + YEAR_OFFSET) * 12) << DTMONTH_SHIFT)
+        | ((timestamp) 1 << DTDAY_SHIFT)) << TSDATE_SHIFT;
 
 date
 date_create(int year, int month, int day)
@@ -282,6 +287,7 @@ date_add_month(date dt, int months)
 
 /* count days (including leap days) since some time before YEAR_MIN */
 #define CNT_OFF                (((YEAR_OFFSET+399)/400)*400)
+__attribute__((__const__))
 static inline int
 date_countdays(date dt)
 {
@@ -292,8 +298,8 @@ date_countdays(date dt)
        int m = date_extract_month(dt);
        int y1 = y + CNT_OFF - 1;
        return date_extract_day(dt)
-               + (y+CNT_OFF)*365 + y1/4 - y1/100 + y1/400
-               + cumdays[m-1] + (m > 2 && isleapyear(y));
+               + (y + CNT_OFF) * 365 + y1 / 4 - y1 / 100 + y1 / 400
+               + cumdays[m - 1] + (m > 2 && isleapyear(y));
 }
 
 /* return the difference in days between the two dates */
@@ -590,10 +596,12 @@ timestamp_diff(timestamp t1, timestamp t
 {
        if (is_timestamp_nil(t1) || is_timestamp_nil(t2))
                return lng_nil;
-       return ts_time(t1) - ts_time(t2) + DAY_USEC * date_diff(ts_date(t1), 
ts_date(t2));
+       return ts_time(t1) - ts_time(t2)
+               + DAY_USEC * date_diff(ts_date(t1), ts_date(t2));
 }
 
 /* GDK level atom functions with some helpers */
+__attribute__((__pure__))
 static ssize_t
 fleximatch(const char *s, const char *pat, size_t min)
 {
@@ -612,7 +620,8 @@ fleximatch(const char *s, const char *pa
 }
 
 static ssize_t
-parse_substr(int *ret, const char *s, size_t min, const char *const list[], 
int size)
+parse_substr(int *ret, const char *s, size_t min,
+            const char *const list[], int size)
 {
        for (int i = 0; i < size; i++) {
                ssize_t j = 0;
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
@@ -68,7 +68,7 @@ MTIMEcurrent_timestamp(Client ctx, times
 
 #define is_str_nil strNil
 
-#define MTIME_STR_BUFFER_LENGTH MAX(strlen(str_nil) + 1, 512)
+#define MTIME_STR_BUFFER_LENGTH 512
 
 
 #define DEC_VAR_R(TYPE, ARG) TYPE *restrict ptr##ARG
@@ -77,11 +77,12 @@ MTIMEcurrent_timestamp(Client ctx, times
 
 #define DEC_ITER(TYPE, ARG)
 
-#define DEC_BUFFER(OUTTYPE, RES, MALFUNC) \
-       OUTTYPE RES = ma_alloc(ma, MTIME_STR_BUFFER_LENGTH); \
-       if (!res) {     \
-               msg = createException(MAL, "batmtime." MALFUNC, SQLSTATE(HY013) 
MAL_MALLOC_FAIL); \
-               goto bailout; \
+#define DEC_BUFFER(OUTTYPE, RES, MALFUNC)                                      
        \
+       OUTTYPE RES = ma_alloc(ma, MTIME_STR_BUFFER_LENGTH);            \
+       if (!res) {                                                             
                                        \
+               msg = createException(MAL, "batmtime." MALFUNC,                 
\
+                                                         SQLSTATE(HY013) 
MAL_MALLOC_FAIL);     \
+               goto bailout;                                                   
                                \
        }
 
 #define DEC_INT(OUTTYPE, RES, MALFUNC) OUTTYPE RES = (OUTTYPE){0}
@@ -94,10 +95,11 @@ MTIMEcurrent_timestamp(Client ctx, times
 
 #define GET_NEXT_VAR(ARG, OFF) ptr##ARG[OFF]
 
-#define APPEND_STR(MALFUNC) \
-       if (tfastins_nocheckVAR(bn, i, res) != GDK_SUCCEED) { \
-               msg = createException(SQL, "batmtime." MALFUNC, SQLSTATE(HY013) 
MAL_MALLOC_FAIL); \
-               break; \
+#define APPEND_STR(MALFUNC)                                                    
                        \
+       if (tfastins_nocheckVAR(bn, i, res) != GDK_SUCCEED) {           \
+               msg = createException(SQL, "batmtime." MALFUNC,                 
\
+                                                         SQLSTATE(HY013) 
MAL_MALLOC_FAIL); \
+               break;                                                          
                                        \
        }
 
 #define GET_NEXT_ITER(ARG, OFF) BUNtvar(&b##ARG##i, OFF)
@@ -105,11 +107,12 @@ MTIMEcurrent_timestamp(Client ctx, times
 #define DEC_NOTHING(TYPE, ARG)
 #define INIT_NOTHING(ARG)
 
-#define FINISH_BUFFER_SINGLE(MALFUNC) \
-bailout: \
-       *ret = NULL; \
-       if (!msg && res && !(*ret = ma_strdup(ma, res))) \
-               msg = createException(MAL, "batmtime." MALFUNC, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+#define FINISH_BUFFER_SINGLE(MALFUNC)                                          
        \
+  bailout:                                                                     
                                        \
+       *ret = NULL;                                                            
                                \
+       if (!msg && res && !(*ret = ma_strdup(ma, res)))                        
\
+               msg = createException(MAL, "batmtime." MALFUNC,                 
\
+                                                         SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
 
 #define FINISH_INT_SINGLE(MALFUNC)     do { *ret = res; } while (0)
 
@@ -118,8 +121,13 @@ bailout: \
 #define CLEAR_NOTHING(RES)
 
 
-#define COPYFLAGS(n)   do { bn->tsorted = b1i.sorted; bn->trevsorted = 
b1i.revsorted; } while (0)
-#define SETFLAGS(n)    do { bn->tsorted = bn->trevsorted = n < 2; } while (0)
+#define COPYFLAGS(n)                                                   \
+       do {                                                                    
        \
+               bn->tsorted = b1i.sorted;                               \
+               bn->trevsorted = b1i.revsorted;                 \
+       } while (0)
+#define SETFLAGS(n)    do { bn->tsorted = bn->trevsorted = (n) < 2; } while (0)
+
 #define func1(NAME, MALFUNC, INTYPE, OUTTYPE,                                  
                \
                          FUNC, SETFLAGS, FUNC_CALL,                            
                                \
                          DEC_SRC, DEC_OUTPUT,                                  
                                        \
@@ -131,7 +139,7 @@ NAME(Client ctx, OUTTYPE *ret, const INT
        (void) ma;                                                              
                                                        \
        str msg = MAL_SUCCEED;                                                  
                                        \
        do {                                                                    
                                                        \
-               FUNC_CALL(FUNC, (*ret), *src);                                  
                                \
+               FUNC_CALL(FUNC, *ret, *src);                                    
                                \
        } while (0);                                                            
                                                \
        return msg;                                                             
                                                        \
 }                                                                              
                                                                \
@@ -209,7 +217,8 @@ bailout:                                                    
                                                                        \
 }
 
 #define func1_noexcept(FUNC, RET, PARAM) RET = FUNC(PARAM)
-#define func1_except(FUNC, RET, PARAM) msg = FUNC(ma, &RET, PARAM); if (msg) 
break
+#define func1_except(FUNC, RET, PARAM)                 \
+       msg = FUNC(ma, &RET, PARAM); if (msg) break
 
 #define func2(NAME, MALFUNC,                                                   
                                \
                          INTYPE1, INTYPE2, OUTTYPE, FUNC, FUNC_CALL,           
                \
@@ -279,7 +288,8 @@ NAME##_bulk(Client cntxt, MalBlkPtr mb, 
                          "inputs not the same size");                          
                                \
                goto bailout;                                                   
                                                \
        }                                                                       
                                                                \
-       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE, ci1.ncand, TRANSIENT)) == 
NULL) { \
+       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE,                              
                        \
+                                        ci1.ncand, TRANSIENT)) == NULL) {      
                                \
                msg = createException(MAL, "batmtime." MALFUNC,                 
                \
                          SQLSTATE(HY013) MAL_MALLOC_FAIL);                     
                                \
                goto bailout;                                                   
                                                \
@@ -363,7 +373,8 @@ NAME##_bulk_p1(Client cntxt, MalBlkPtr m
                goto bailout;                                                   
                                                \
        }                                                                       
                                                                \
        canditer_init(&ci2, b2, s2);                                            
                                \
-       if ((bn = COLnew(ci2.hseq, TYPE_##OUTTYPE, ci2.ncand, TRANSIENT)) == 
NULL) { \
+       if ((bn = COLnew(ci2.hseq, TYPE_##OUTTYPE,                              
                        \
+                                        ci2.ncand, TRANSIENT)) == NULL) {      
                                \
                msg = createException(MAL, "batmtime." MALFUNC,                 
                \
                          SQLSTATE(HY013) MAL_MALLOC_FAIL);                     
                                \
                goto bailout;                                                   
                                                \
@@ -443,7 +454,8 @@ NAME##_bulk_p2(Client cntxt, MalBlkPtr m
                goto bailout;                                                   
                                                \
        }                                                                       
                                                                \
        canditer_init(&ci1, b1, s1);                                            
                                \
-       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE, ci1.ncand, TRANSIENT)) == 
NULL) { \
+       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE,                              
                        \
+                                        ci1.ncand, TRANSIENT)) == NULL) {      
                                \
                msg = createException(MAL, "batmtime." MALFUNC,                 
                \
                          SQLSTATE(HY013) MAL_MALLOC_FAIL);                     
                                \
                goto bailout;                                                   
                                                \
@@ -491,7 +503,8 @@ bailout:                                                    
                                                                        \
 }
 
 #define func2_noexcept(FUNC, RET, PARAM1, PARAM2) RET = FUNC(PARAM1, PARAM2)
-#define func2_except(FUNC, RET, PARAM1, PARAM2) msg = FUNC(&RET, PARAM1, 
PARAM2); if (msg) break
+#define func2_except(FUNC, RET, PARAM1, PARAM2)                        \
+       msg = FUNC(&RET, PARAM1, PARAM2); if (msg) break
 
 #define func3(NAME, MALFUNC,                                                   
                                \
                          INTYPE1, INTYPE2, OUTTYPE, FUNC, FUNC_CALL,           
                \
@@ -500,9 +513,10 @@ bailout:                                                   
                                                                        \
                          GET_NEXT_SRC1, GET_NEXT_SRC2,                         
                                \
                          APPEND_NEXT, CLEAR_EXTRA_SINGLE, CLEAR_EXTRA_MULTI)   
        \
 static str                                                                     
                                                        \
-NAME(Client ctx, OUTTYPE *ret, const INTYPE1 *v1, const INTYPE2 *v2, const lng 
*extra) \
+NAME(Client ctx, OUTTYPE *ret, const INTYPE1 *v1, const INTYPE2 *v2,   \
+        const lng *extra)                                                      
                                                \
 {                                                                              
                                                                \
-       allocator *ma = ctx->curprg->def->ma;                                   
                                \
+       allocator *ma = ctx->curprg->def->ma;                                   
                        \
        (void) ma;                                                              
                                                        \
        str msg = MAL_SUCCEED;                                                  
                                        \
        DEC_EXTRA(OUTTYPE, res, MALFUNC);                                       
                                \
@@ -529,7 +543,7 @@ NAME##_bulk(Client cntxt, MalBlkPtr mb, 
                *bid2 = getArgReference_bat(stk, pci, 2),                       
                        \
                *sid1 = pci->argc == 6 ? getArgReference_bat(stk, pci, 3) : 
NULL, \
                *sid2 = pci->argc == 6 ? getArgReference_bat(stk, pci, 4) : 
NULL; \
-       lng *extra = getArgReference_lng(stk, pci, pci->argc-1);                
                                \
+       lng *extra = getArgReference_lng(stk, pci, pci->argc-1);                
        \
        BATiter b1i, b2i = { .vh = NULL };                                      
                                \
        DEC_SRC1(INTYPE1, 1);                                                   
                                        \
        DEC_SRC2(INTYPE2, 2);                                                   
                                        \
@@ -562,7 +576,8 @@ NAME##_bulk(Client cntxt, MalBlkPtr mb, 
                          "inputs not the same size");                          
                                \
                goto bailout;                                                   
                                                \
        }                                                                       
                                                                \
-       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE, ci1.ncand, TRANSIENT)) == 
NULL) { \
+       if ((bn = COLnew(ci1.hseq, TYPE_##OUTTYPE,                              
                        \
+                                        ci1.ncand, TRANSIENT)) == NULL) {      
                                \
                msg = createException(MAL, "batmtime." MALFUNC,                 
                \
                          SQLSTATE(HY013) MAL_MALLOC_FAIL);                     
                                \
                goto bailout;                                                   
                                                \
@@ -576,7 +591,8 @@ NAME##_bulk(Client cntxt, MalBlkPtr mb, 
                for (BUN i = 0; i < ci1.ncand; i++) {                           
                        \
                        oid p1 = (canditer_next_dense(&ci1) - off1);            
                \
                        oid p2 = (canditer_next_dense(&ci2) - off2);            
                \
-                       FUNC_CALL(FUNC, res, GET_NEXT_SRC1(1, p1), 
GET_NEXT_SRC2(2, p2), *extra); \
+                       FUNC_CALL(FUNC, res, GET_NEXT_SRC1(1, p1),              
                        \
+                                         GET_NEXT_SRC2(2, p2), *extra);        
                                \
                        APPEND_NEXT(MALFUNC);                                   
                                        \
                        nils |= is_##OUTTYPE##_nil(res);                        
                                \
                }                                                               
                                                                \
@@ -584,7 +600,8 @@ NAME##_bulk(Client cntxt, MalBlkPtr mb, 
                for (BUN i = 0; i < ci1.ncand; i++) {                           
                        \
                        oid p1 = (canditer_next(&ci1) - off1);                  
                        \
                        oid p2 = (canditer_next(&ci2) - off2);                  
                        \
-                       FUNC_CALL(FUNC, res, GET_NEXT_SRC1(1, p1), 
GET_NEXT_SRC2(2, p2), *extra); \
+                       FUNC_CALL(FUNC, res, GET_NEXT_SRC1(1, p1),              
                        \
+                                         GET_NEXT_SRC2(2, p2), *extra);        
                                \
                        APPEND_NEXT(MALFUNC);                                   
                                        \
                        nils |= is_##OUTTYPE##_nil(res);                        
                                \
                }                                                               
                                                                \
@@ -647,7 +664,8 @@ NAME##_bulk_p1(Client cntxt, MalBlkPtr m
                goto bailout;                                                   
                                                \
        }                                                                       
                                                                \
        canditer_init(&ci2, b2, s2);                                            
                                \
-       if ((bn = COLnew(ci2.hseq, TYPE_##OUTTYPE, ci2.ncand, TRANSIENT)) == 
NULL) { \
+       if ((bn = COLnew(ci2.hseq, TYPE_##OUTTYPE,                              
                        \
+                                        ci2.ncand, TRANSIENT)) == NULL) {      
                                \
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to