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

Reply via email to