Changeset: 03ee54a6b97c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03ee54a6b97c
Modified Files:
sql/backends/monet5/sql_result.mx
sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.out
sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
sql/test/BugDay_2005-12-19_2.9.3/Tests/interval_times_int.SF-1281996.stable.out
sql/test/BugTracker/Tests/cast_interval2time.SF-1488247.stable.out
sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
sql/test/Dump/Tests/dump.stable.out
sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
Branch: default
Log Message:
Second interval values are now printed with decimal point.
After Niels' change, second interval changes were printed as
milliseconds, but now we print them again as seconds, but with a
fraction.
diffs (232 lines):
diff --git a/sql/backends/monet5/sql_result.mx
b/sql/backends/monet5/sql_result.mx
--- a/sql/backends/monet5/sql_result.mx
+++ b/sql/backends/monet5/sql_result.mx
@@ -361,6 +361,68 @@ dec_frstr(Column *c, int type, char *s,
}
static ptr *
+sec_frstr(Column *c, int type, char *s, char *e, char quote)
+{
+ /* read a sec_interval value
+ * this knows that the stored scale is always 3 */
+ unsigned int i, neg = 0;
+ lng *r;
+ lng res = 0;
+
+ (void) c;
+ (void) type;
+ (void) quote;
+ assert(type == TYPE_lng);
+
+ if (s == e)
+ return NULL;
+
+ if (*s == '-'){
+ neg = 1;
+ s++;
+ } else if (*s == '+'){
+ neg = 0;
+ s++;
+ }
+ for (i = 0; i < (19 - 3) && *s && *s != '.'; i++, s++) {
+ if (!*s || *s < '0' || *s > '9')
+ return NULL;
+ res *= 10;
+ res += (*s - '0');
+ }
+ if (!*s) {
+ for( i = 0; i < 3; i++) {
+ res *= 10;
+ }
+ }
+ if (*s) {
+ if (*s != '.')
+ return NULL;
+ s++;
+ for (i = 0; *s && i < 3; i++, s++) {
+ if (*s < '0' || *s > '9')
+ return NULL;
+ res *= 10;
+ res += (*s-'0');
+ }
+ for (; i < 3; i++) {
+ res *= 10;
+ }
+ }
+ if (*s)
+ return NULL;
+ r = c->data;
+ if (r == NULL)
+ r = (lng *) GDKmalloc(sizeof(lng));
+ c->data = r;
+ if (neg)
+ *r = -res;
+ else
+ *r = res;
+ return (ptr *) r;
+}
+
+static ptr *
_ASCIIadt_frStr(Column *c, int type, char *s, char *e, char quote)
{
int len;
@@ -520,6 +582,10 @@ mvc_import_table(Client cntxt, mvc *m, b
if (col->type.type->eclass == EC_DEC) {
fmt[i].tostr = &dec_tostr;
fmt[i].frstr = &dec_frstr;
+ } else if (col->type.type->eclass == EC_INTERVAL &&
+ strcmp(col->type.type->sqlname,
"sec_interval") == 0) {
+ fmt[i].tostr = &dec_tostr;
+ fmt[i].frstr = &sec_frstr;
}
fmt[i].raw = NULL;
fmt[i].rawfile = NULL;
@@ -748,6 +814,10 @@ export_value( mvc *m, stream *s, int ecl
l = sql_timestamp_tostr((void *) &ts_res, buf, len, mtype, p);
ok = (mnstr_write(s, *buf, l, 1) == 1);
+ } else if (eclass == EC_INTERVAL &&
+ strcmp(sqlname, "sec_interval") == 0) {
+ l = dec_tostr((void *) (ptrdiff_t) 3, buf, len, mtype, p);
+ ok = mnstr_write(s, *buf, l, 1) == 1;
} else {
switch(mtype) {
case TYPE_bte:
@@ -877,6 +947,11 @@ mvc_export_table(mvc *m, stream *s, res_
fmt[i].tostr = &sql_time_tostr;
fmt[i].frstr = NULL;
fmt[i].extra = ts_res;
+ } else if (c->type.type->eclass == EC_INTERVAL &&
+ strcmp(c->type.type->sqlname, "sec_interval") == 0) {
+ fmt[i].tostr = &dec_tostr;
+ fmt[i].frstr = &sec_frstr;
+ fmt[i].extra = (void *) (ptrdiff_t) 3;
} else {
fmt[i].extra = fmt+i;
}
diff --git
a/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
b/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
---
a/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
+++
b/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
@@ -10,7 +10,7 @@ stderr of test 'interval_on_time_stamp.S
# 19:58:14 > Mtimeout -timeout 60 MapiClient -lsql -u monetdb -P monetdb
--host=localhost --port=46797 < interval_on_time_stamp.SF-1080488.sql
# 19:58:14 >
-MAPI = monetdb@localhost:35781
+MAPI = monetdb@ottar:32630
QUERY = select interval '2:74' hour to minute;
ERROR = !Overflow detected in minutes (74)
diff --git
a/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.out
b/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.out
---
a/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.out
+++
b/sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.out
@@ -58,12 +58,13 @@ Over..
% sql_add_single_value # name
% sec_interval # type
% 0 # length
-[ 0 ]
+[ 0.000 ]
+#select interval '2' hour + interval '74' minute;
% . # table_name
% sql_add_single_value # name
% sec_interval # type
% 0 # length
-[ 11640000 ]
+[ 11640.000 ]
# 12:45:37 >
# 12:45:37 > Done.
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
--- a/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
+++ b/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
@@ -28,7 +28,7 @@ Over..
% single_value # name
% sec_interval # type
% 0 # length
-[ 86400000 ]
+[ 86400.000 ]
# 16:12:10 >
# 16:12:10 > Done.
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/interval_times_int.SF-1281996.stable.out
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/interval_times_int.SF-1281996.stable.out
---
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/interval_times_int.SF-1281996.stable.out
+++
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/interval_times_int.SF-1281996.stable.out
@@ -29,13 +29,13 @@ Over..
% sql_mul_single_value # name
% sec_interval # type
% 0 # length
-[ 2000 ]
+[ 2.000 ]
#select interval '1' second * 2;
% . # table_name
% sql_mul_single_value # name
% sec_interval # type
% 0 # length
-[ 2000 ]
+[ 2.000 ]
# 16:27:57 >
# 16:27:57 > Done.
diff --git a/sql/test/BugTracker/Tests/cast_interval2time.SF-1488247.stable.out
b/sql/test/BugTracker/Tests/cast_interval2time.SF-1488247.stable.out
--- a/sql/test/BugTracker/Tests/cast_interval2time.SF-1488247.stable.out
+++ b/sql/test/BugTracker/Tests/cast_interval2time.SF-1488247.stable.out
@@ -23,7 +23,7 @@ Over..
% single_value # name
% sec_interval # type
% 0 # length
-[ 60000 ]
+[ 60.000 ]
#select cast(interval '60' second as time);
% . # table_name
% single_value # name
diff --git
a/sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
b/sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
---
a/sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
+++
b/sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
@@ -79,10 +79,10 @@ stderr of test 'inserting_invalid_timest
# 19:33:06 > mclient -lsql -umonetdb -Pmonetdb --host=alf --port=33470
# 19:33:06 >
-MAPI = monetdb@alf:32535
+MAPI = monetdb@ottar:32630
QUERY = insert into foo values('12:12:12:99');
ERROR = !SQLException:timestamp:timestamp (12:12:12:99) has incorrect format
-MAPI = monetdb@alf:32535
+MAPI = monetdb@ottar:32630
QUERY = insert into foo values(timestamp '12:12:12:99');
ERROR = !incorrect timestamp value (12:12:12:99) in: "insert into foo
values(timestamp '12:12:12:99')"
diff --git a/sql/test/Dump/Tests/dump.stable.out
b/sql/test/Dump/Tests/dump.stable.out
--- a/sql/test/Dump/Tests/dump.stable.out
+++ b/sql/test/Dump/Tests/dump.stable.out
@@ -84,7 +84,7 @@ CREATE TABLE "sys"."typestest" (
"character10" CHAR(10)
);
COPY 1 RECORDS INTO "sys"."typestest" FROM stdin USING DELIMITERS
'\t','\n','"';
-true 10 10000 1000000 1000000 10000000000 1e+30 1.00000002e+20
1 123456789 12345.678 3.1415000000000002 3.1415 3.1415
2009-04-15 24 18 3 1728000000 108000000
120000000 100000000 36000000 6000000 2000000 600000 100000
10000 1995-07-15 07:30:00.000000 1995-07-15 07:30:00.00000
1995-07-15 07:30:00.000000+00:00 1995-07-15 07:30:00.00000+00:00
07:30:00 07:30:00.00000 07:30:00+00:00 07:30:00.00000+00:00 123456
123456 "123456" "123456" "x" "varchar" "0123456789"
+true 10 10000 1000000 1000000 10000000000 1e+30 1.00000002e+20
1 123456789 12345.678 3.1415000000000002 3.1415 3.1415
2009-04-15 24 18 3 1728000.000 108000.000
120000.000 100000.000 36000.000 6000.000 2000.000
600.000 100.000 10.000 1995-07-15 07:30:00.000000 1995-07-15
07:30:00.00000 1995-07-15 07:30:00.000000+00:00 1995-07-15
07:30:00.00000+00:00 07:30:00 07:30:00.00000 07:30:00+00:00
07:30:00.00000+00:00 123456 123456 "123456" "123456" "x"
"varchar" "0123456789"
CREATE TABLE "sys"."keytest1" (
"key1" INTEGER NOT NULL,
"key2" INTEGER NOT NULL,
diff --git
a/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
b/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
--- a/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
+++ b/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
@@ -10,7 +10,7 @@ stderr of test 'interval_convert_bugs-sf
# 14:19:19 > Mtimeout -timeout 60 MapiClient -lsql -u monetdb -P monetdb
--host=localhost --port=40835 < interval_convert_bugs-sf-1274077-1274085.sql
# 14:19:19 >
-MAPI = monetdb@volund:38056
+MAPI = monetdb@ottar:32630
QUERY = select interval '1' year = interval '12' second;
ERROR = !types month_interval(1,0) and sec_interval(13,0) are not equal
diff --git
a/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
b/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
--- a/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
+++ b/sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
@@ -33,7 +33,7 @@ Over..
% single_value # name
% sec_interval # type
% 0 # length
-[ 86400000 ]
+[ 86400.000 ]
# 12:57:23 >
# 12:57:23 > Done.
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list