Changeset: b3f1534adc78 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b3f1534adc78
Modified Files:
sql/server/rel_optimizer.c
Branch: mtest
Log Message:
Merged with default
diffs (truncated from 1481 to 300 lines):
diff --git a/clients/mapiclient/ReadlineTools.c
b/clients/mapiclient/ReadlineTools.c
--- a/clients/mapiclient/ReadlineTools.c
+++ b/clients/mapiclient/ReadlineTools.c
@@ -88,7 +88,7 @@ sql_tablename_generator(const char *text
static char *
sql_command_generator(const char *text, int state)
{
- static int idx, len;
+ static size_t idx, len;
const char *name;
if (!state) {
@@ -303,20 +303,43 @@ readline_show_error(const char *msg) {
#define BUFFER_SIZE 1024
#endif
+#ifdef WIN32
+#define unlink _unlink
+#endif
+
static int
invoke_editor(int cnt, int key) {
- char template[] = "/tmp/mclient_temp_XXXXXX";
char editor_command[BUFFER_SIZE];
char *read_buff = NULL;
char *editor = NULL;
FILE *fp;
size_t content_len;
size_t read_bytes, idx;
+#ifdef WIN32
+ char *mytemp;
+ char template[] = "mclient_temp_XXXXXX";
+#else
+ int mytemp;
+ char template[] = "/tmp/mclient_temp_XXXXXX";
+#endif
(void) cnt;
(void) key;
- if ((fp = fdopen(mkstemp(template), "r+")) == NULL) {
+#ifdef WIN32
+ if ((mytemp = _mktemp(template)) == NULL) {
+#else
+ if ((mytemp = mkstemp(template)) == 0) {
+#endif
+ readline_show_error("invoke_editor: Cannot create temp file\n");
+ goto bailout;
+ }
+
+#ifdef WIN32
+ if ((fp = fopen(mytemp, "r+")) == NULL) {
+#else
+ if ((fp = fdopen(mytemp, "r+")) == NULL) {
+#endif
// Notify the user that we cannot create temp file
readline_show_error("invoke_editor: Cannot create temp file\n");
goto bailout;
@@ -367,7 +390,7 @@ invoke_editor(int cnt, int key) {
}
rl_replace_line(read_buff, 0);
- rl_point = idx + 1; // place the point one character after the
end of the string
+ rl_point = (int)(idx + 1); // place the point one character
after the end of the string
free(read_buff);
} else {
diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c
--- a/gdk/gdk_analytic_func.c
+++ b/gdk/gdk_analytic_func.c
@@ -1004,7 +1004,7 @@ minmaxvarsized##IMP: \
gdk_return \
GDKanalytical##OP(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tpe, int
frame_type) \
{ \
- bool has_nils = false; \
+ bool has_nils = false, last = false; \
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL, \
*levels_offset = NULL, tree_capacity = 0, nlevels = 0; \
bit *np = p ? Tloc(p, 0) : NULL, *op = o ? Tloc(o, 0) : NULL; \
@@ -1013,7 +1013,6 @@ GDKanalytical##OP(BAT *r, BAT *p, BAT *o
int (*atomcmp)(const void *, const void *) = ATOMcompare(tpe); \
void *segment_tree = NULL; \
gdk_return res = GDK_SUCCEED; \
- bool last = false ; \
\
if (cnt > 0) { \
switch (frame_type) { \
@@ -1352,11 +1351,10 @@ GDKanalyticalcount(BAT *r, BAT *p, BAT *
const void *restrict nil = ATOMnilptr(tpe);
int (*cmp) (const void *, const void *) = ATOMcompare(tpe);
const void *restrict bheap = Tloc(b, 0);
- bool count_all = !ignore_nils || b->tnonil;
+ bool count_all = !ignore_nils || b->tnonil, last = false;
BATiter bpi = bat_iterator(b);
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
if (cnt > 0) {
switch (frame_type) {
@@ -1659,43 +1657,17 @@ sum##TPE1##TPE2##IMP: \
} \
} while (0)
-static gdk_return /* This is a workaround for a MSVC compiler bug at build
engine version 16.7.0+b89cb5fde Will test again after the next release */
-GDKanalyticalsumothers(BAT *r, BAT *p, bit *np, BAT *b, oid *restrict start,
oid *restrict end, int tp1, int tp2)
+gdk_return
+GDKanalyticalsum(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int
tp2, int frame_type)
{
- bool has_nils = false;
- oid i = 0, j = 0, k = 0, cnt = BATcount(b), *levels_offset = NULL,
tree_capacity = 0, nlevels = 0;
+ bool has_nils = false, last = false;
+ oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL,
+ *levels_offset = NULL, tree_capacity = 0, nlevels = 0;
+ bit *np = p ? Tloc(p, 0) : NULL, *op = o ? Tloc(o, 0) : NULL;
int abort_on_error = 1;
BUN nils = 0;
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
-
- ANALYTICAL_SUM_BRANCHES(OTHERS);
-
- BATsetcount(r, cnt);
- r->tnonil = !has_nils;
- r->tnil = has_nils;
- goto cleanup; /* all these gotos seem confusing but it cleans up the
ending of the operator */
-calc_overflow:
- GDKerror("22003!overflow in calculation.\n");
- res = GDK_FAIL;
-cleanup:
- GDKfree(segment_tree);
- return res;
-nosupport:
- GDKerror("42000!type combination (sum(%s)->%s) not supported.\n",
ATOMname(tp1), ATOMname(tp2));
- return GDK_FAIL;
-}
-
-gdk_return
-GDKanalyticalsum(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int
tp2, int frame_type)
-{
- bool has_nils = false;
- oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL;
- bit *np = p ? Tloc(p, 0) : NULL, *op = o ? Tloc(o, 0) : NULL;
- int abort_on_error = 1;
- BUN nils = 0;
- bool last = false;
if (cnt > 0) {
switch (frame_type) {
@@ -1712,7 +1684,7 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *o,
ANALYTICAL_SUM_BRANCHES(CURRENT_ROW);
} break;
default: {
- return GDKanalyticalsumothers(r, p, np, b, start, end,
tp1, tp2);
+ ANALYTICAL_SUM_BRANCHES(OTHERS);
}
}
}
@@ -1720,16 +1692,20 @@ GDKanalyticalsum(BAT *r, BAT *p, BAT *o,
BATsetcount(r, cnt);
r->tnonil = !has_nils;
r->tnil = has_nils;
- return GDK_SUCCEED;
- bailout:
+ goto cleanup; /* all these gotos seem confusing but it cleans up the
ending of the operator */
+bailout:
GDKerror("42000!error while calculating floating-point sum\n");
- return GDK_FAIL;
- nosupport:
+ res = GDK_FAIL;
+ goto cleanup;
+calc_overflow:
+ GDKerror("22003!overflow in calculation.\n");
+ res = GDK_FAIL;
+cleanup:
+ GDKfree(segment_tree);
+ return res;
+nosupport:
GDKerror("42000!type combination (sum(%s)->%s) not supported.\n",
ATOMname(tp1), ATOMname(tp2));
return GDK_FAIL;
- calc_overflow:
- GDKerror("22003!overflow in calculation.\n");
- return GDK_FAIL;
}
/* product on integers */
@@ -2193,7 +2169,7 @@ prod##TPE1##TPE2##IMP: \
gdk_return
GDKanalyticalprod(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int
tp2, int frame_type)
{
- bool has_nils = false;
+ bool has_nils = false, last = false;
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL,
*levels_offset = NULL, tree_capacity = 0, nlevels = 0;
bit *np = p ? Tloc(p, 0) : NULL, *op = o ? Tloc(o, 0) : NULL;
@@ -2201,7 +2177,6 @@ GDKanalyticalprod(BAT *r, BAT *p, BAT *o
BUN nils = 0;
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
if (cnt > 0) {
switch (frame_type) {
@@ -2580,7 +2555,7 @@ avg_num_deltas(hge)
gdk_return
GDKanalyticalavg(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tpe, int
frame_type)
{
- bool has_nils = false;
+ bool has_nils = false, last = false;
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL,
*levels_offset = NULL, tree_capacity = 0, nlevels = 0;
lng n = 0, rr = 0;
@@ -2590,7 +2565,6 @@ GDKanalyticalavg(BAT *r, BAT *p, BAT *o,
BUN nils = 0;
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
#ifdef HAVE_HGE
hge sum = 0;
#else
@@ -2831,14 +2805,13 @@ avg_int_deltas(hge)
gdk_return
GDKanalyticalavginteger(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int
tpe, int frame_type)
{
- bool has_nils = false;
+ bool has_nils = false, last = false;
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL,
*levels_offset = NULL, tree_capacity = 0, nlevels = 0;
lng rem = 0, ncnt = 0;
bit *np = p ? Tloc(p, 0) : NULL, *op = o ? Tloc(o, 0) : NULL;
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
if (cnt > 0) {
switch (frame_type) {
@@ -3081,7 +3054,7 @@ statistics##TPE##IMP: \
gdk_return \
GDKanalytical_##NAME(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tpe,
int frame_type) \
{ \
- bool has_nils = false; \
+ bool has_nils = false, last = false; \
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL, \
*levels_offset = NULL, tree_capacity = 0, nlevels = 0; \
lng n = 0; \
@@ -3089,7 +3062,6 @@ GDKanalytical_##NAME(BAT *r, BAT *p, BAT
dbl *restrict rb = (dbl *) Tloc(r, 0), mean = 0, m2 = 0, delta; \
void *segment_tree = NULL; \
gdk_return res = GDK_SUCCEED; \
- bool last = false; \
\
if (cnt > 0) { \
switch (frame_type) { \
@@ -3288,7 +3260,7 @@ typedef struct covariance_deltas {
gdk_return \
GDKanalytical_##NAME(BAT *r, BAT *p, BAT *o, BAT *b1, BAT *b2, BAT *s, BAT *e,
int tpe, int frame_type) \
{ \
- bool has_nils = false; \
+ bool has_nils = false, last = false; \
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b1), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL, \
*levels_offset = NULL, tree_capacity = 0, nlevels = 0; \
lng n = 0; \
@@ -3296,7 +3268,6 @@ GDKanalytical_##NAME(BAT *r, BAT *p, BAT
dbl *restrict rb = (dbl *) Tloc(r, 0), mean1 = 0, mean2 = 0, m2 = 0,
delta1, delta2; \
void *segment_tree = NULL; \
gdk_return res = GDK_SUCCEED; \
- bool last = false; \
\
if (cnt > 0) { \
switch (frame_type) { \
@@ -3527,7 +3498,7 @@ typedef struct correlation_deltas {
gdk_return
GDKanalytical_correlation(BAT *r, BAT *p, BAT *o, BAT *b1, BAT *b2, BAT *s,
BAT *e, int tpe, int frame_type)
{
- bool has_nils = false;
+ bool has_nils = false, last = false;
oid i = 0, j = 0, k = 0, l = 0, cnt = BATcount(b1), *restrict start = s
? (oid*)Tloc(s, 0) : NULL, *restrict end = e ? (oid*)Tloc(e, 0) : NULL,
*levels_offset = NULL, tree_capacity = 0, nlevels = 0;
lng n = 0;
@@ -3535,7 +3506,6 @@ GDKanalytical_correlation(BAT *r, BAT *p
dbl *restrict rb = (dbl *) Tloc(r, 0), mean1 = 0, mean2 = 0, up = 0,
down1 = 0, down2 = 0, delta1, delta2, aux, rr;
void *segment_tree = NULL;
gdk_return res = GDK_SUCCEED;
- bool last = false;
if (cnt > 0) {
switch (frame_type) {
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
@@ -8931,8 +8931,13 @@ rel_merge_table_rewrite(visitor *v, sql_
if (!next->semantics && ((lval && lval->isnull)
|| (hval && hval->isnull))) {
skip = 1; /* NULL values don't match,
skip them */
} else if (!next->semantics) {
-
if (next->flag == cmp_equal || hval !=
lval) {
-
skip |= next->anti ?
exp_range_overlap(cmin, cmax, lval, hval, false, false) != 0 :
exp_range_overlap(cmin, cmax, lval, hval, false, false) == 0;
+
if (next->flag == cmp_equal) {
+
skip |= next->anti ?
exp_range_overlap(cmin, cmax, lval, hval, false, false) != 0 :
+
exp_range_overlap(cmin, cmax, lval, hval, false, false) == 0;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list