Changeset: 3fbf4ccd501c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3fbf4ccd501c
Modified Files:
        gdk/gdk_bbp.c
        monetdb5/modules/atoms/mtime.c
Branch: mtime
Log Message:

Align some definitions in GDK upgrade code and mtime.c.


diffs (57 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -611,10 +611,12 @@ leapyears(int year)
 }
 
 #define YEAR_OFFSET    4712
+#define YEAR_MIN       (-YEAR_OFFSET)
 #define DTDAY_WIDTH    5               /* 1..28/29/30/31, depending on month */
 #define DTDAY_SHIFT    0
-#define DTMONTH_WIDTH  21              /* enough for 174762 year */
+#define DTMONTH_WIDTH  21              /* enough for 174761 years */
 #define DTMONTH_SHIFT  (DTDAY_WIDTH+DTDAY_SHIFT)
+#define YEAR_MAX       (YEAR_MIN+(1<<DTMONTH_WIDTH)/12-1)
 #define mkdate(d, m, y)        (((((y) + YEAR_OFFSET) * 12 + (m) - 1) << 
DTMONTH_SHIFT) \
                         | ((d) << DTDAY_SHIFT))
 #define TSTIME_WIDTH   37              /* [0..24*60*60*1000000) */
@@ -660,14 +662,14 @@ cvtdate(int n)
                day -= CUMDAYS[month - 1];
        }
        /* clamp date */
-       if (year < -YEAR_OFFSET) {
+       if (year < YEAR_MIN) {
                day = 1;
                month = 1;
-               year = -YEAR_OFFSET;
-       } else if (year > ((1<<21)/12 - YEAR_OFFSET)) {
+               year = YEAR_MIN;
+       } else if (year > YEAR_MAX) {
                day = 31;
                month = 12;
-               year = (1<<21)/12 - YEAR_OFFSET;
+               year = YEAR_MAX;
        }
        return mkdate(day, month, year);
 }
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
@@ -35,13 +35,15 @@ extern char *strptime(const char *, cons
 #endif
 
 #define YEAR_MIN               (-4712) /* 4713 BC */
-#define YEAR_MAX               (YEAR_MIN+(1<<21)/12-1)
 
 #define YEAR_OFFSET            (-YEAR_MIN)
 #define DTDAY_WIDTH            5               /* 1..28/29/30/31, depending on 
month */
 #define DTDAY_SHIFT            0
-#define DTMONTH_WIDTH  21              /* enough for 174762 years */
+#define DTMONTH_WIDTH  21              /* enough for 174761 years (and 8 
months) */
 #define DTMONTH_SHIFT  (DTDAY_WIDTH+DTDAY_SHIFT)
+
+#define YEAR_MAX               (YEAR_MIN+(1<<DTMONTH_WIDTH)/12-1)
+
 #define isdate(y, m, d)        ((m) > 0 && (m) <= 12 && (d) > 0 && (y) >= 
YEAR_MIN && (y) <= YEAR_MAX && (d) <= monthdays(y, m))
 #define mkdate(y, m, d)        ((date) (((uint32_t) (((y) + YEAR_OFFSET) * 12 
+ (m) - 1) << DTMONTH_SHIFT) \
                                                                 | ((uint32_t) 
(d) << DTDAY_SHIFT)))
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to