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