Changeset: be73c35addf4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=be73c35addf4
Modified Files:
        clients/mapiclient/mclient.c
        monetdb5/modules/atoms/str.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_gencode.c
        sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.sql
        sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err
        
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
        sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out
        
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
Branch: default
Log Message:

merged with Jun2016


diffs (283 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1078,7 +1078,7 @@ TESTrenderer(MapiHdl hdl)
                                 strlen(s) < l ||
                                 /* start or end with white space? */
                                 my_isspace(*s) ||
-                                my_isspace(s[l - 1]) ||
+                                (l > 0 && my_isspace(s[l - 1])) ||
                                 /* timezone can have embedded comma */
                                 strcmp(tp, "timezone") == 0 ||
                                 /* a bunch of geom types */
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -1586,7 +1586,7 @@ STRConcat(str *res, const str *val1, con
 str
 STRLength(int *res, const str *arg1)
 {
-       size_t l;
+       int l;
        const char *s = *arg1;
 
        if (strNil(s)) {
@@ -1595,7 +1595,7 @@ STRLength(int *res, const str *arg1)
        }
        l =  UTF8_strlen(s);
        assert(l <INT_MAX);
-       *res = (int) l;
+       *res = l;
        return MAL_SUCCEED;
 }
 
@@ -1620,9 +1620,7 @@ STRTail(str *res, const str *arg1, const
                *res = GDKstrdup(str_nil);
        } else {
                if (off < 0) {
-                       size_t l = UTF8_strlen(s);
-                       int len = (int) l;
-                       assert(l < INT_MAX);
+                       int len = UTF8_strlen(s);
 
                        if (len == int_nil) {
                                *res = GDKstrdup(str_nil);
diff --git a/sql/backends/monet5/sql_cast.c b/sql/backends/monet5/sql_cast.c
--- a/sql/backends/monet5/sql_cast.c
+++ b/sql/backends/monet5/sql_cast.c
@@ -383,7 +383,7 @@ SQLstr_cast_(str *res, mvc *m, int eclas
        if ((len > 0 && sz > len) || sz < 0) {
                if (r)
                        GDKfree(r);
-               if (ATOMcmp(TYPE_str, ATOMnilptr(TYPE_str), p) != 0) {
+               if (ATOMcmp(tpe, ATOMnilptr(tpe), p) != 0) {
                        throw(SQL, "str_cast", "22001!value too long for type 
(var)char(%d)", len);
                } else {
                        r = GDKstrdup(str_nil);
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1397,6 +1397,9 @@ static int
                                        break;
                                case cmp_filter:
                                        done = 1;
+
+                                       if (backend_create_subfunc(sql, 
s->op4.funcval, NULL) < 0)
+                                               return -1;
                                        op = sql_func_imp(s->op4.funcval->func);
                                        mod = 
sql_func_mod(s->op4.funcval->func);
 
diff --git a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.sql 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.sql
--- a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.sql
+++ b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.sql
@@ -1,6 +1,8 @@
 -- test SQL functions: convert(fromType, toType) and cast(fromType as toType) 
for all SQL data types and data values
 -- See also https://www.monetdb.org/bugzilla/show_bug.cgi?id=3460
 
+SET TIME ZONE INTERVAL '+02:00' HOUR TO MINUTE;
+
 -- BOOLEAN (true, false)
 CREATE TABLE T_boolean (v boolean);
 INSERT into T_boolean VALUES (true), (false);
@@ -1000,7 +1002,7 @@ SELECT v, convert(v, decimal(15,3)) from
 
 SELECT v, convert(v, char) from T_dec where v between 0 and 1;
 SELECT v, convert(v, varchar) from T_dec; -- missing length specification
-SELECT v, convert(v, varchar(16)) from T_dec;
+SELECT v, convert(v, varchar(20)) from T_dec;
 SELECT v, convert(v, longvarchar) from T_dec; -- LONGVARCHAR not valid data 
type
 SELECT v, convert(v, long varchar) from T_dec; -- LONG VARCHAR not valid data 
type
 SELECT v, convert(v, CHARACTER LARGE OBJECT) from T_dec;
@@ -1043,7 +1045,7 @@ SELECT v, cast(v as decimal(15,3)) from 
 
 SELECT v, cast(v as char) from T_dec where v between 0 and 1;
 SELECT v, cast(v as varchar) from T_dec; -- missing length specification
-SELECT v, cast(v as varchar(16)) from T_dec;
+SELECT v, cast(v as varchar(20)) from T_dec;
 SELECT v, cast(v as longvarchar) from T_dec; -- LONGVARCHAR not valid data type
 SELECT v, cast(v as long varchar) from T_dec; -- LONG VARCHAR not valid data 
type
 SELECT v, cast(v as CHARACTER LARGE OBJECT) from T_dec;
diff --git 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err
--- a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err
+++ b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err
@@ -1380,7 +1380,7 @@ MAPI  = (monetdb) /var/tmp/mtest-13167/.
 QUERY = SELECT v, convert(v, varchar) from T_dec; -- missing length 
specification
 ERROR = !CHARACTER VARYING needs a mandatory length specification in: "select 
v, convert(v, varchar)"
         !syntax error, unexpected FROM in: "from"
-MAPI  = (monetdb) /var/tmp/mtest-10564/.s.monetdb.32160
+MAPI  = (monetdb) /var/tmp/mtest-26956/.s.monetdb.37342
 QUERY = SELECT v, convert(v, longvarchar) from T_dec; -- LONGVARCHAR not valid 
data type
 ERROR = !type (longvarchar) unknown in: "select v, convert(v, longvarchar)"
         !syntax error, unexpected FROM in: "from"
@@ -1441,7 +1441,7 @@ MAPI  = (monetdb) /var/tmp/mtest-13167/.
 QUERY = SELECT v, cast(v as varchar) from T_dec; -- missing length 
specification
 ERROR = !CHARACTER VARYING needs a mandatory length specification in: "select 
v, cast(v as varchar)"
         !syntax error, unexpected FROM in: "from"
-MAPI  = (monetdb) /var/tmp/mtest-10564/.s.monetdb.32160
+MAPI  = (monetdb) /var/tmp/mtest-26956/.s.monetdb.37342
 QUERY = SELECT v, cast(v as longvarchar) from T_dec; -- LONGVARCHAR not valid 
data type
 ERROR = !type (longvarchar) unknown in: "select v, cast(v as longvarchar)"
         !syntax error, unexpected FROM in: "from"
diff --git 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
--- 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
+++ 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
@@ -1302,7 +1302,7 @@ MAPI  = (monetdb) /var/tmp/mtest-13167/.
 QUERY = SELECT v, convert(v, varchar) from T_dec; -- missing length 
specification
 ERROR = !CHARACTER VARYING needs a mandatory length specification in: "select 
v, convert(v, varchar)"
         !syntax error, unexpected FROM in: "from"
-MAPI  = (monetdb) /var/tmp/mtest-10564/.s.monetdb.32160
+MAPI  = (monetdb) /var/tmp/mtest-26956/.s.monetdb.37342
 QUERY = SELECT v, convert(v, longvarchar) from T_dec; -- LONGVARCHAR not valid 
data type
 ERROR = !type (longvarchar) unknown in: "select v, convert(v, longvarchar)"
         !syntax error, unexpected FROM in: "from"
@@ -1359,7 +1359,7 @@ MAPI  = (monetdb) /var/tmp/mtest-13167/.
 QUERY = SELECT v, cast(v as varchar) from T_dec; -- missing length 
specification
 ERROR = !CHARACTER VARYING needs a mandatory length specification in: "select 
v, cast(v as varchar)"
         !syntax error, unexpected FROM in: "from"
-MAPI  = (monetdb) /var/tmp/mtest-10564/.s.monetdb.32160
+MAPI  = (monetdb) /var/tmp/mtest-26956/.s.monetdb.37342
 QUERY = SELECT v, cast(v as longvarchar) from T_dec; -- LONGVARCHAR not valid 
data type
 ERROR = !type (longvarchar) unknown in: "select v, cast(v as longvarchar)"
         !syntax error, unexpected FROM in: "from"
diff --git 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out
--- a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out
+++ b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out
@@ -2512,7 +2512,7 @@ Ready.
 [ NULL,        NULL    ]
 #DROP TABLE T_bigint;
 #CREATE TABLE T_float (v FLOAT);
-#INSERT into T_float VALUES (1), (0), (-1), (-127), (127), (-32767), (32767), 
(-2147483647), (2147483647);
+#INSERT into T_float VALUES (1.0), (0.0), (-1.0), (-127.0), (127.0), 
(-32767.0), (32767.0), (-2147483647.0), (2147483647.0);
 [ 9    ]
 #INSERT into T_float VALUES (null);
 [ 1    ]
@@ -4912,7 +4912,7 @@ Ready.
 [ NULL,        NULL    ]
 #DROP TABLE T_num;
 #CREATE TABLE T_dec (v DECIMAL(17,7));
-#INSERT into T_dec VALUES (1), (0), (-1), (-127), (127), (-32767), (32767), 
(-2147483647), (2147483647), (0.12), (-3.1415629);
+#INSERT into T_dec VALUES (1.0), (0.0), (-1.0), (-127.0), (127.0), (-32767.0), 
(32767.0), (-2147483647.0), (2147483647.0), (0.12), (-3.1415629);
 [ 11   ]
 #INSERT into T_dec VALUES (null);
 [ 1    ]
@@ -5180,11 +5180,11 @@ Ready.
 [ 0.1200000,   0.120   ]
 [ -3.1415629,  -3.142  ]
 [ NULL,        NULL    ]
-#SELECT v, convert(v, varchar(16)) from T_dec;
+#SELECT v, convert(v, varchar(20)) from T_dec;
 % sys.t_dec,   sys.L1 # table_name
 % v,   L1 # name
 % decimal,     varchar # type
-% 19,  14 # length
+% 19,  19 # length
 [ 1.0000000,   "1.0000000"     ]
 [ 0.0000000,   "0.0000000"     ]
 [ -1.0000000,  "-1.0000000"    ]
@@ -5192,8 +5192,8 @@ Ready.
 [ 127.0000000, "127.0000000"   ]
 [ -32767.0000000,      "-32767.0000000"        ]
 [ 32767.0000000,       "32767.0000000" ]
-[ -2147483647.0000000, NULL    ]
-[ 2147483647.0000000,  NULL    ]
+[ -2147483647.0000000, "-2147483647.0000000"   ]
+[ 2147483647.0000000,  "2147483647.0000000"    ]
 [ 0.1200000,   "0.1200000"     ]
 [ -3.1415629,  "-3.1415629"    ]
 [ NULL,        NULL    ]
@@ -5478,11 +5478,11 @@ Ready.
 [ 0.1200000,   0.120   ]
 [ -3.1415629,  -3.142  ]
 [ NULL,        NULL    ]
-#SELECT v, cast(v as varchar(16)) from T_dec;
+#SELECT v, cast(v as varchar(20)) from T_dec;
 % sys.t_dec,   sys.L1 # table_name
 % v,   L1 # name
 % decimal,     varchar # type
-% 19,  14 # length
+% 19,  19 # length
 [ 1.0000000,   "1.0000000"     ]
 [ 0.0000000,   "0.0000000"     ]
 [ -1.0000000,  "-1.0000000"    ]
@@ -5490,8 +5490,8 @@ Ready.
 [ 127.0000000, "127.0000000"   ]
 [ -32767.0000000,      "-32767.0000000"        ]
 [ 32767.0000000,       "32767.0000000" ]
-[ -2147483647.0000000, NULL    ]
-[ 2147483647.0000000,  NULL    ]
+[ -2147483647.0000000, "-2147483647.0000000"   ]
+[ 2147483647.0000000,  "2147483647.0000000"    ]
 [ 0.1200000,   "0.1200000"     ]
 [ -3.1415629,  "-3.1415629"    ]
 [ NULL,        NULL    ]
diff --git 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
--- 
a/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
+++ 
b/sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
@@ -2644,7 +2644,7 @@ Ready.
 [ NULL,        NULL    ]
 #DROP TABLE T_bigint;
 #CREATE TABLE T_float (v FLOAT);
-#INSERT into T_float VALUES (1), (0), (-1), (-127), (127), (-32767), (32767), 
(-2147483647), (2147483647);
+#INSERT into T_float VALUES (1.0), (0.0), (-1.0), (-127.0), (127.0), 
(-32767.0), (32767.0), (-2147483647.0), (2147483647.0);
 [ 9    ]
 #INSERT into T_float VALUES (null);
 [ 1    ]
@@ -5176,7 +5176,7 @@ Ready.
 [ NULL,        NULL    ]
 #DROP TABLE T_num;
 #CREATE TABLE T_dec (v DECIMAL(17,7));
-#INSERT into T_dec VALUES (1), (0), (-1), (-127), (127), (-32767), (32767), 
(-2147483647), (2147483647), (0.12), (-3.1415629);
+#INSERT into T_dec VALUES (1.0), (0.0), (-1.0), (-127.0), (127.0), (-32767.0), 
(32767.0), (-2147483647.0), (2147483647.0), (0.12), (-3.1415629);
 [ 11   ]
 #INSERT into T_dec VALUES (null);
 [ 1    ]
@@ -5461,11 +5461,11 @@ Ready.
 [ 0.1200000,   0.120   ]
 [ -3.1415629,  -3.142  ]
 [ NULL,        NULL    ]
-#SELECT v, convert(v, varchar(16)) from T_dec;
+#SELECT v, convert(v, varchar(20)) from T_dec;
 % sys.t_dec,   sys.L1 # table_name
 % v,   L1 # name
 % decimal,     varchar # type
-% 19,  14 # length
+% 19,  19 # length
 [ 1.0000000,   "1.0000000"     ]
 [ 0.0000000,   "0.0000000"     ]
 [ -1.0000000,  "-1.0000000"    ]
@@ -5473,8 +5473,8 @@ Ready.
 [ 127.0000000, "127.0000000"   ]
 [ -32767.0000000,      "-32767.0000000"        ]
 [ 32767.0000000,       "32767.0000000" ]
-[ -2147483647.0000000, NULL    ]
-[ 2147483647.0000000,  NULL    ]
+[ -2147483647.0000000, "-2147483647.0000000"   ]
+[ 2147483647.0000000,  "2147483647.0000000"    ]
 [ 0.1200000,   "0.1200000"     ]
 [ -3.1415629,  "-3.1415629"    ]
 [ NULL,        NULL    ]
@@ -5776,11 +5776,11 @@ Ready.
 [ 0.1200000,   0.120   ]
 [ -3.1415629,  -3.142  ]
 [ NULL,        NULL    ]
-#SELECT v, cast(v as varchar(16)) from T_dec;
+#SSELECT v, cast(v as varchar(20)) from T_dec;
 % sys.t_dec,   sys.L1 # table_name
 % v,   L1 # name
 % decimal,     varchar # type
-% 19,  14 # length
+% 19,  19 # length
 [ 1.0000000,   "1.0000000"     ]
 [ 0.0000000,   "0.0000000"     ]
 [ -1.0000000,  "-1.0000000"    ]
@@ -5788,8 +5788,8 @@ Ready.
 [ 127.0000000, "127.0000000"   ]
 [ -32767.0000000,      "-32767.0000000"        ]
 [ 32767.0000000,       "32767.0000000" ]
-[ -2147483647.0000000, NULL    ]
-[ 2147483647.0000000,  NULL    ]
+[ -2147483647.0000000, "-2147483647.0000000"   ]
+[ 2147483647.0000000,  "2147483647.0000000"    ]
 [ 0.1200000,   "0.1200000"     ]
 [ -3.1415629,  "-3.1415629"    ]
 [ NULL,        NULL    ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to