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