Changeset: 436fdf28d606 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=436fdf28d606
Added Files:
        sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.err
        sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.out
Modified Files:
        common/stream/stream.c
        geom/monetdb5/geom.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/kernel/mmath.c
        sql/backends/monet5/sql.h
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
Branch: default
Log Message:

Merged with Jun2020


diffs (239 lines):

diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -2187,7 +2187,7 @@ write_callback(char *buffer, size_t size
                size_t maxsize;
 
                maxsize = (c->usesize + size + BLOCK_CURL - 1) & ~(BLOCK_CURL - 
1);
-               b = realloc(c->buffer, c->maxsize);
+               b = realloc(c->buffer, maxsize);
                if (b == NULL)
                        return 0;       /* indicate failure to library */
                c->buffer = b;
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -50,18 +50,20 @@ wkbNULLcopy(void)
 static inline void
 degrees2radians(double *x, double *y, double *z)
 {
-       *x *= M_PI / 180.0;
-       *y *= M_PI / 180.0;
-       *z *= M_PI / 180.0;
+       double val = M_PI / 180.0;
+       *x *= val;
+       *y *= val;
+       *z *= val;
 }
 
 /** convert radians to degrees */
 static inline void
 radians2degrees(double *x, double *y, double *z)
 {
-       *x *= 180.0 / M_PI;
-       *y *= 180.0 / M_PI;
-       *z *= 180.0 / M_PI;
+       double val = 180.0 / M_PI;
+       *x *= val;
+       *y *= val;
+       *z *= val;
 }
 
 static str
diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -1554,6 +1554,13 @@ JSONkeyArray(json *ret, json *js)
                        }
                        if (jt->elm[i].valuelen)
                                strncpy(r, jt->elm[i].value - 1, 
jt->elm[i].valuelen + 2);
+                       else {
+                               r = GDKstrdup("\"\"");
+                               if(r == NULL) {
+                                       JSONfree(jt);
+                                       goto memfail;
+                               }
+                       }
                        result = JSONglue(result, r, ',');
                        if (result == NULL) {
                                JSONfree(jt);
diff --git a/monetdb5/modules/kernel/batmmath.c 
b/monetdb5/modules/kernel/batmmath.c
--- a/monetdb5/modules/kernel/batmmath.c
+++ b/monetdb5/modules/kernel/batmmath.c
@@ -450,25 +450,25 @@ CMDscience_bat_##FUNC(Client cntxt, MalB
 static double
 radians(double x)
 {
-       return x * 3.14159265358979323846 / 180.0;
+       return x * (3.14159265358979323846 / 180.0);
 }
 
 static float
 radiansf(float x)
 {
-       return (float) (x * 3.14159265358979323846 / 180.0);
+       return (float) (x * (3.14159265358979323846 / 180.0));
 }
 
 static double
 degrees(double x)
 {
-       return x * 180.0 / 3.14159265358979323846;
+       return x * (180.0 / 3.14159265358979323846);
 }
 
 static float
 degreesf(float x)
 {
-       return (float) (x * 180.0 / 3.14159265358979323846);
+       return (float) (x * (180.0 / 3.14159265358979323846));
 }
 
 mal_export str CMDscience_bat_asin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
diff --git a/monetdb5/modules/kernel/mmath.c b/monetdb5/modules/kernel/mmath.c
--- a/monetdb5/modules/kernel/mmath.c
+++ b/monetdb5/modules/kernel/mmath.c
@@ -32,8 +32,8 @@
 #endif
 
 #define cot(x)                         (1 / tan(x))
-#define radians(x)                     ((x) * 3.14159265358979323846 / 180.0)
-#define degrees(x)                     ((x) * 180.0 / 3.14159265358979323846)
+#define radians(x)                     ((x) * (3.14159265358979323846 / 180.0))
+#define degrees(x)                     ((x) * (180.0 / 3.14159265358979323846))
 
 double
 logbs(double x, double base)
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -269,8 +269,8 @@ sql5_export str dbl_round_wrap(dbl *res,
 sql5_export str dbl_bat_round_wrap(bat *res, const bat *v, const bte *r);
 sql5_export str dbl_trunc_wrap(dbl *res, const dbl *v, const int *r);
 
-#define radians(x)     ((x) * 3.14159265358979323846 /180.0 )
-#define degrees(x)     ((x) * 180.0/3.14159265358979323846 )
+#define radians(x)     ((x) * (3.14159265358979323846 / 180.0))
+#define degrees(x)     ((x) * (180.0 / 3.14159265358979323846))
 
 sql5_export str SQLcst_alpha_cst(dbl *res, const dbl *decl, const dbl *theta);
 sql5_export str SQLbat_alpha_cst(bat *res, const bat *decl, const dbl *theta);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -9411,6 +9411,7 @@ optimize_rel(mvc *sql, sql_rel *rel, int
                rel = rel_visitor_topdown(sql, rel, &rel_push_count_down, 
&changes);
                if (level <= 0) {
                        rel = rel_visitor_topdown(sql, rel, 
&rel_push_select_down, &changes); 
+                       rel = rel_visitor_bottomup(sql, rel, 
&rel_remove_empty_select, &e_changes); 
                        rel = rel_visitor_topdown(sql, rel, 
&rel_push_join_down, &changes); 
                }
 
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -3731,14 +3731,14 @@ static sql_exp *
                else if (list_length(l) <= 63)
                        tpe = sql_bind_localtype("lng");
 #ifdef HAVE_HGE
-               else if (list_length(l) <= 127)
+               else if (have_hge && list_length(l) <= 127)
                        tpe = sql_bind_localtype("hge");
 #endif
                else
                        return sql_error(sql, 02, SQLSTATE(42000) "SELECT: 
GROUPING the number of grouping columns is larger"
                                                                " than the 
maximum number of representable bits from this server (%d > %d)", 
list_length(l),
 #ifdef HAVE_HGE
-                                                        127
+                                                       have_hge ? 127 : 63
 #else
                                                         63
 #endif
diff --git a/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.err 
b/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'jsonkeyarray.Bug-6858` in directory 'sql/test/json` itself:
+
+
+# 14:15:50 >  
+# 14:15:50 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-240899" "--port=36049"
+# 14:15:50 >  
+
+
+# 14:15:50 >  
+# 14:15:50 >  "Done."
+# 14:15:50 >  
+
diff --git a/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.out 
b/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/json/Tests/jsonkeyarray.Bug-6858.stable.out
@@ -0,0 +1,66 @@
+stdout of test 'jsonkeyarray.Bug-6858` in directory 'sql/test/json` itself:
+
+
+# 14:15:50 >  
+# 14:15:50 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-240899" "--port=36049"
+# 14:15:50 >  
+
+#select json.keyarray(json '{ "":0 }');
+% .%2 # table_name
+% %2 # name
+% json # type
+% 4 # length
+[ "[\"\"]"     ]
+#select json.isvalid(json '{ "":0 }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+#select json.isobject(json '{ "":0 }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+#select json.keyarray(json '{ "":"" }');
+% .%2 # table_name
+% %2 # name
+% json # type
+% 4 # length
+[ "[\"\"]"     ]
+#select json.isvalid(json '{ "":"" }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+#select json.isobject(json '{ "":"" }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+#select json.keyarray(json '{ "a":0 }');
+% .%2 # table_name
+% %2 # name
+% json # type
+% 5 # length
+[ "[\"a\"]"    ]
+#select json.isvalid(json '{ "a":0 }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+#select json.isobject(json '{ "a":0 }');
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+
+# 14:15:50 >  
+# 14:15:50 >  "Done."
+# 14:15:50 >  
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to