MonetDB: Jun2020 - Reverting commit 0a084ae8d84f partially, now ...

2020-05-19 Thread Pedro Ferreira
Changeset: 55d484b2e096 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=55d484b2e096
Modified Files:
sql/server/rel_optimizer.c

sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
Branch: Jun2020
Log Message:

Reverting commit 0a084ae8d84f partially, now that the TODO is done


diffs (27 lines):

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
@@ -1265,10 +1265,7 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel
sql->errstr[0] = 0;
if (!e && exp_is_atom(ne))
return ne;
-   ne = exp_ref(sql, e);
-   if (is_outerjoin(t->op))  /* TODO if e is found on the left 
side of the left join or the right of the right join the has_no_nil flag can be 
kept */
-   set_has_nil(ne);
-   return ne;
+   return exp_ref(sql ,e);
case e_cmp: 
if (e->flag == cmp_or || e->flag == cmp_filter) {
list *l = exps_rename(sql, e->l, f, t);
diff --git 
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
 
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
--- 
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
+++ 
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
@@ -156,7 +156,7 @@ top N (
 | | | | | | | | | | | | table(sys.table8) [ "table8"."t8pkcol" NOT NULL 
HASHCOL  as "clookup5"."t8pkcol" ] COUNT 
 | | | | | | | | | | | ) [ "table2"."t2colc115" = "clookup5"."t8pkcol" HASHCOL  
],
 | | | | | | | | | | | table(sys.table9) [ "table9"."t9pkcol" NOT NULL HASHCOL 
, "table9"."t9cola1", "table9"."t9cola91", "table9"."t9cola111" ] COUNT 
-| | | | | | | | | | ) [ "table1"."t1pkcol" HASHCOL  = "table9"."t9cola111" ],
+| | | | | | | | | | ) [ "table1"."t1pkcol" NOT NULL HASHCOL  = 
"table9"."t9cola111" ],
 | | | | | | | | | | table(sys.table10) [ "table10"."t10pkcol" NOT NULL HASHCOL 
, "table10"."t10cola1", "table10"."t10cola91" ] COUNT 
 | | | | | | | | | ) [ "table9"."t9pkcol" HASHCOL  = "table10"."t10pkcol" 
HASHCOL  ],
 | | | | | | | | | table(sys.table11) [ "table11"."t11pkcol" NOT NULL HASHCOL , 
"table11"."t11cola91" ] COUNT 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: msk-type - Merge with default branch.

2020-05-19 Thread Sjoerd Mullender
Changeset: 03ad832c1e76 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03ad832c1e76
Added Files:
.bumpversion.cfg
buildtools/selinux/ChangeLog.Jun2020
clients/odbc/ChangeLog-Archive
debian/libmonetdb20.install
documentation/source/manual_pages/README
sql/server/cmp_exp_eval.h
sql/server/rel_out2inner_join.txt
sql/server/rel_outer_join_optimizer.h
sql/test/Triggers/Tests/trigger_projection.sql.src
sql/test/Triggers/Tests/trigger_projection.stable.err
sql/test/Triggers/Tests/trigger_projection.stable.out
sql/test/Triggers/trigger_projection.sql
sql/test/Users/Tests/createUserRollback.SQL.py
sql/test/Users/Tests/createUserRollback.stable.err
sql/test/Users/Tests/createUserRollback.stable.out
sql/test/subquery/Tests/subquery6.sql
sql/test/subquery/Tests/subquery6.stable.err
sql/test/subquery/Tests/subquery6.stable.out
Removed Files:
ChangeLog.Nov2019
buildtools/ChangeLog.Nov2019
clients/ChangeLog.Nov2019
clients/mapilib/ChangeLog.Nov2019
common/stream/ChangeLog.Nov2019
debian/libmonetdb19.install
gdk/ChangeLog.Nov2019
geom/ChangeLog.Nov2019
monetdb5/ChangeLog.Nov2019
sql/ChangeLog.Nov2019
testing/ChangeLog.Nov2019
tools/merovingian/ChangeLog.Nov2019
vertoo.config
vertoo.data
Modified Files:
.hgtags
ChangeLog-Archive
ChangeLog.Jun2020
MonetDB.spec
NT/monetdb_config.h.in
NT/rules.msc
buildtools/selinux/ChangeLog-Archive
buildtools/selinux/monetdb.te
clients/ChangeLog-Archive
clients/ChangeLog.Jun2020
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
clients/mapiclient/mclient.1
clients/mapiclient/mclient.c
clients/mapiclient/msqldump.1
clients/mapilib/mapi.rc
clients/odbc/ChangeLog.Jun2020
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
configure.ag
debian/changelog
debian/control
documentation/source/manual_pages/mclient.rst
documentation/source/manual_pages/monetdb.rst
documentation/source/manual_pages/monetdbd.rst.in
documentation/source/manual_pages/mserver5.rst.in
documentation/source/manual_pages/msqldump.rst
gdk/ChangeLog-Archive
gdk/ChangeLog.Jun2020
gdk/gdk.h
gdk/gdk_atoms.h
gdk/gdk_batop.c
gdk/gdk_calc.c
gdk/gdk_cross.c
gdk/gdk_hash.c
gdk/gdk_heap.c
gdk/gdk_join.c
gdk/gdk_storage.c
gdk/gdk_system.h
gdk/gdk_utils.h
gdk/libbat.rc
geom/lib/libgeom.h
geom/monetdb5/geom.c
libversions
monetdb5/ChangeLog-Archive
monetdb5/ChangeLog.Jun2020
monetdb5/extras/rapi/rapi.c
monetdb5/mal/mal.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/algebra.h
monetdb5/modules/kernel/algebra.mal
monetdb5/modules/mal/mkey.c
monetdb5/optimizer/opt_mergetable.c
monetdb5/optimizer/opt_mitosis.c
monetdb5/tools/Tests/mserver5--help.stable.err
monetdb5/tools/Tests/mserver5--help.stable.err.Windows
monetdb5/tools/libmonetdb5.rc
sql/ChangeLog-Archive
sql/ChangeLog.Jun2020
sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
sql/backends/monet5/UDF/pyapi3/pyheader.h
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_rank.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_user.c
sql/benchmarks/tpcds/Tests/alter.timeout
sql/common/sql_types.c
sql/include/sql_catalog.h
sql/include/sql_relation.h
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_rewriter.c
sql/server/rel_rewriter.h
sql/server/rel_select.c
sql/server/rel_semantic.c
sql/server/rel_unnest.c
sql/server/rel_updates.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_partition.c
sql/server/sql_query.c
sql/server/sql_semantic.c
sql/storage/bat/bat_logger.c
sql/storage/bat/bat_storage.c
sql/storage/sql_storage.h
sql/storage/store.c

sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out


MonetDB: Jun2020 - Switch from vertoo to bumpversion.

2020-05-19 Thread Sjoerd Mullender
Changeset: f8217cdc045d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f8217cdc045d
Modified Files:
buildtools/conf/Maddlog
configure.ag
Branch: Jun2020
Log Message:

Switch from vertoo to bumpversion.


diffs (24 lines):

diff --git a/buildtools/conf/Maddlog b/buildtools/conf/Maddlog
--- a/buildtools/conf/Maddlog
+++ b/buildtools/conf/Maddlog
@@ -123,7 +123,7 @@ fi
 case "$CL" in
 '')
 d=.
-while [ ! -f $d/vertoo.data -a ! -f $d/ChangeLog -a ! -f $d/ChangeLog.$tag 
]; do
+while [ ! -f $d/.bumpversion.cfg -a ! -f $d/ChangeLog -a ! -f 
$d/ChangeLog.$tag ]; do
if [ $d -ef / ]; then
echo "$0: cannot find top directory of package" >&2
exit 1
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -131,7 +131,7 @@ AS_CASE([$CC],
#  __GNUC_MINOR__, and __GNUC_PATCHLEVEL__ macros.
CC="$CC -no-gcc"])
 
-AS_IF([test -f "$srcdir"/vertoo.data],
+AS_IF([test -f "$srcdir"/.bumpversion.cfg],
[
# Developers compiling from Mercurial:
# default is --enable-strict --enable-assert --enable-debug 
--disable-optimize --enable-developer --enable-profiler=auto
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: mbedded - merged with default

2020-05-19 Thread Niels Nes
Changeset: 188ae9768946 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=188ae9768946
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_unnest.c

sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out
Branch: mbedded
Log Message:

merged with default


diffs (truncated from 651 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2635,6 +2635,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
}
} else {
+   right = subrel_project(be, right, refs, rel->r);
stmt *l = bin_first_column(be, left);
stmt *r = bin_first_column(be, right);
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
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
@@ -1946,6 +1946,31 @@ rel_push_topn_and_sample_down(mvc *sql, 
operator_type relation_type = is_topn(rel->op) ? op_topn : 
op_sample;
sql_rel *(*func) (sql_allocator *, sql_rel *, list *) = 
is_topn(rel->op) ? rel_topn : rel_sample;
 
+   /* nested topN relations without offset */
+   if (r && is_topn(rel->op) && is_topn(r->op) && 
list_length(rel->exps) == 1 && list_length(r->exps) == 1) {
+   sql_exp *topN1 = rel->exps->h->data, *topN2 = 
r->exps->h->data;
+
+   if (topN1->l && topN2->l) {
+   atom *a1 = (atom *)topN1->l, *a2 = (atom 
*)topN2->l;
+
+   if (a1->tpe.type->localtype == 
a2->tpe.type->localtype && !a1->isnull && !a2->isnull) {
+   if (atom_cmp(a1, a2) < 0) {
+   rel->l = r->l;
+   r->l = NULL;
+   rel_destroy(r);
+   (*changes)++;
+   return rel;
+   } else {
+   rel->l = NULL;
+   rel_destroy(rel);
+   rel = r;
+   (*changes)++;
+   return rel;
+   }
+   }
+   }
+   }
+
if (r && is_simple_project(r->op) && need_distinct(r)) 
return rel;
 
@@ -6218,6 +6243,12 @@ rel_remove_join(mvc *sql, sql_rel *rel, 
 static sql_rel *
 rel_push_project_up(mvc *sql, sql_rel *rel, int *changes)
 {
+   if (is_simple_project(rel->op) && rel->l && !rel_is_ref(rel)) {
+   sql_rel *l = rel->l;
+   if (is_simple_project(l->op))
+   return rel_merge_projects(sql, rel, changes);
+   }
+
/* project/project cleanup is done later */
if (is_join(rel->op) || is_select(rel->op)) {
node *n;
@@ -7392,7 +7423,7 @@ rel_simplify_like_select(mvc *sql, sql_r
 static sql_exp *
 rel_simplify_predicates(mvc *sql, sql_rel *rel, sql_exp *e, int depth, int 
*changes)
 {
-   (void) depth;
+   (void)depth;
if (is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) {
if (is_atom(e->type) && ((!e->l && !e->r && !e->f) || e->r)) /* 
prepared statement parameter or argument */
return e;
@@ -7426,8 +7457,7 @@ rel_simplify_predicates(mvc *sql, sql_re
list *args = l->l;
sql_exp *ie = args->h->data;
 
-   /* TODO, we have to fix the NOT NULL 
flag propagation on columns after an outer join, so we can remove the 
is_outerjoin check */
-   if (!is_outerjoin(rel->op) && 
(!has_nil(ie) || exp_is_not_null(sql, ie))) { /* is null on something that is 
never null, is always false */
+   if (!has_nil(ie) || 
exp_is_not_null(sql, ie)) { /* is null on something that is 

MonetDB: default - Merged with Jun2020

2020-05-19 Thread Pedro Ferreira
Changeset: 17f9716d9992 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17f9716d9992
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_unnest.c

sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out
Branch: default
Log Message:

Merged with Jun2020


diffs (truncated from 651 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2635,6 +2635,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
}
} else {
+   right = subrel_project(be, right, refs, rel->r);
stmt *l = bin_first_column(be, left);
stmt *r = bin_first_column(be, right);
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
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
@@ -1946,6 +1946,31 @@ rel_push_topn_and_sample_down(mvc *sql, 
operator_type relation_type = is_topn(rel->op) ? op_topn : 
op_sample;
sql_rel *(*func) (sql_allocator *, sql_rel *, list *) = 
is_topn(rel->op) ? rel_topn : rel_sample;
 
+   /* nested topN relations without offset */
+   if (r && is_topn(rel->op) && is_topn(r->op) && 
list_length(rel->exps) == 1 && list_length(r->exps) == 1) {
+   sql_exp *topN1 = rel->exps->h->data, *topN2 = 
r->exps->h->data;
+
+   if (topN1->l && topN2->l) {
+   atom *a1 = (atom *)topN1->l, *a2 = (atom 
*)topN2->l;
+
+   if (a1->tpe.type->localtype == 
a2->tpe.type->localtype && !a1->isnull && !a2->isnull) {
+   if (atom_cmp(a1, a2) < 0) {
+   rel->l = r->l;
+   r->l = NULL;
+   rel_destroy(r);
+   (*changes)++;
+   return rel;
+   } else {
+   rel->l = NULL;
+   rel_destroy(rel);
+   rel = r;
+   (*changes)++;
+   return rel;
+   }
+   }
+   }
+   }
+
if (r && is_simple_project(r->op) && need_distinct(r)) 
return rel;
 
@@ -6218,6 +6243,12 @@ rel_remove_join(mvc *sql, sql_rel *rel, 
 static sql_rel *
 rel_push_project_up(mvc *sql, sql_rel *rel, int *changes)
 {
+   if (is_simple_project(rel->op) && rel->l && !rel_is_ref(rel)) {
+   sql_rel *l = rel->l;
+   if (is_simple_project(l->op))
+   return rel_merge_projects(sql, rel, changes);
+   }
+
/* project/project cleanup is done later */
if (is_join(rel->op) || is_select(rel->op)) {
node *n;
@@ -7392,7 +7423,7 @@ rel_simplify_like_select(mvc *sql, sql_r
 static sql_exp *
 rel_simplify_predicates(mvc *sql, sql_rel *rel, sql_exp *e, int depth, int 
*changes)
 {
-   (void) depth;
+   (void)depth;
if (is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) {
if (is_atom(e->type) && ((!e->l && !e->r && !e->f) || e->r)) /* 
prepared statement parameter or argument */
return e;
@@ -7426,8 +7457,7 @@ rel_simplify_predicates(mvc *sql, sql_re
list *args = l->l;
sql_exp *ie = args->h->data;
 
-   /* TODO, we have to fix the NOT NULL 
flag propagation on columns after an outer join, so we can remove the 
is_outerjoin check */
-   if (!is_outerjoin(rel->op) && 
(!has_nil(ie) || exp_is_not_null(sql, ie))) { /* is null on something that is 
never null, is always false */
+   if (!has_nil(ie) || 
exp_is_not_null(sql, ie)) { /* is null on something that is 

MonetDB: mbedded - fedora should have all...

2020-05-19 Thread Niels Nes
Changeset: 753cd0be4b5b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=753cd0be4b5b
Modified Files:
ctest/cmake/detect-netcdf.cmake
ctest/cmake/test_detect_lz4.c
ctest/cmake/test_detect_proj.c
Branch: mbedded
Log Message:

fedora should have all...


diffs (54 lines):

diff --git a/ctest/cmake/detect-netcdf.cmake b/ctest/cmake/detect-netcdf.cmake
--- a/ctest/cmake/detect-netcdf.cmake
+++ b/ctest/cmake/detect-netcdf.cmake
@@ -40,16 +40,16 @@ elseif (${LINUX_DISTRO} STREQUAL "ubuntu
   endif()
 elseif(${LINUX_DISTRO} STREQUAL "fedora")
   if(${LINUX_DISTRO_VERSION} STREQUAL "30")
-set(DETECT "1")
-set(UNDETECT "0")
+set(DETECT "0")
+set(UNDETECT "1")
   endif()
   if(${LINUX_DISTRO_VERSION} STREQUAL "31")
-set(DETECT "1")
-set(UNDETECT "0")
+set(DETECT "0")
+set(UNDETECT "1")
   endif()
   if(${LINUX_DISTRO_VERSION} STREQUAL "32")
-set(DETECT "1")
-set(UNDETECT "0")
+set(DETECT "0")
+set(UNDETECT "1")
   endif()
 else()
   message(ERROR "Linux distro: ${LINUX_DISTRO} not known")
diff --git a/ctest/cmake/test_detect_lz4.c b/ctest/cmake/test_detect_lz4.c
--- a/ctest/cmake/test_detect_lz4.c
+++ b/ctest/cmake/test_detect_lz4.c
@@ -12,8 +12,8 @@ int
 main(void)
 {
 #ifdef HAVE_LIBLZ4
-return 1;
+return 0;
 #else
-return 0;
+return 1;
 #endif
 }
diff --git a/ctest/cmake/test_detect_proj.c b/ctest/cmake/test_detect_proj.c
--- a/ctest/cmake/test_detect_proj.c
+++ b/ctest/cmake/test_detect_proj.c
@@ -12,8 +12,8 @@ int
 main(void)
 {
 #ifdef HAVE_PROJ
-return 1;
+return 0;
 #else
-return 0;
+return 1;
 #endif
 }
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: mbedded - test pthread detection

2020-05-19 Thread Arjen de Rijke
Changeset: 2c84f02f3687 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2c84f02f3687
Added Files:
ctest/cmake/detect-pthreadh.cmake
ctest/cmake/detect-pthreadinit.cmake
ctest/cmake/detect-pthreadkill.cmake
ctest/cmake/detect-pthreadsig.cmake
ctest/cmake/test_detect_pthreadh.c.in
ctest/cmake/test_detect_pthreadinit.c.in
ctest/cmake/test_detect_pthreadkill.c.in
ctest/cmake/test_detect_pthreadsig.c.in
Modified Files:
CMakeLists.txt
cmake/monetdb-defines.cmake
ctest/cmake/CMakeLists.txt
Branch: mbedded
Log Message:

test pthread detection


diffs (truncated from 434 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,10 +41,10 @@ include(CheckFunctionExists REQUIRED)
 include(CheckTypeSize REQUIRED)
 include(TestBigEndian REQUIRED)
 
-# Include MonetDB specific functions
 if(WIN32)
   set(CMAKE_REQUIRED_LIBRARIES  ws2_32.lib shell32.lib advapi32.lib)
 endif()
+# Include MonetDB specific functions
 include(monetdb-functions)
 include(monetdb-findpackages)
 include(monetdb-defines)
@@ -100,6 +100,8 @@ endif()
 
 include(GNUInstallDirs)
 
+# Define the macro variables after configuring the install directories.
+# Some variables define additional installation settings.
 monetdb_macro_variables()
 # Define custom target after the install directories variables.
 # Some custom target will need these setting.
diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -112,10 +112,8 @@ function(monetdb_configure_defines)
   check_function_exists("uname" HAVE_UNAME)
   # Some libc versions on Linux distributions don't have it
   check_symbol_exists("semtimedop" "sys/types.h;sys/ipc.h;sys/sem.h" 
HAVE_SEMTIMEDOP)
-  if(HAVE_PTHREAD_H)
-check_function_exists("pthread_kill" HAVE_PTHREAD_KILL)
-check_function_exists("pthread_sigmask" HAVE_PTHREAD_SIGMASK)
-  endif()
+  check_function_exists("pthread_kill" HAVE_PTHREAD_KILL)
+  check_function_exists("pthread_sigmask" HAVE_PTHREAD_SIGMASK)
   if(HAVE_GETOPT_H)
 set(HAVE_GETOPT 1 PARENT_SCOPE)
   endif()
@@ -125,7 +123,7 @@ macro(monetdb_macro_variables)
   # Set variables to define C macro's
   # These are related to the detected packages
   # These names are legacy. When the code is changed to use the cmake
-  # variables, they can be removed.
+  # variables, then they can be removed.
   set(HAVE_ICONV ${Iconv_FOUND})
   set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
   set(HAVE_LIBPCRE ${PCRE_FOUND})
diff --git a/ctest/cmake/CMakeLists.txt b/ctest/cmake/CMakeLists.txt
--- a/ctest/cmake/CMakeLists.txt
+++ b/ctest/cmake/CMakeLists.txt
@@ -64,5 +64,9 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/dete
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-unixgetaddrinfo.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-wingetaddrinfo.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-getaddrinfo.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadh.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadinit.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadkill.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadsig.cmake)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/set-dir-vars.cmake)
diff --git a/ctest/cmake/detect-pthreadh.cmake 
b/ctest/cmake/detect-pthreadh.cmake
new file mode 100644
--- /dev/null
+++ b/ctest/cmake/detect-pthreadh.cmake
@@ -0,0 +1,64 @@
+#[[
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+#]]
+
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION)
+endif()
+
+if (${LINUX_DISTRO} STREQUAL "debian")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "9")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "10")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+elseif (${LINUX_DISTRO} STREQUAL "ubuntu")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "18")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "19")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "20")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+elseif(${LINUX_DISTRO} STREQUAL "fedora")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "30")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "31")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "32")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+else()
+  message(ERROR "Linux distro: ${LINUX_DISTRO} not known")
+  message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known")
+endif()
+

MonetDB: Jun2020 - merge projects

2020-05-19 Thread Niels Nes
Changeset: e4fbadd3a8e0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e4fbadd3a8e0
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_rel.c

sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out

sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out
Branch: Jun2020
Log Message:

merge projects

make sure expressions resulting after a outerjoin have the proper has_nil set


diffs (truncated from 544 to 300 lines):

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
@@ -6379,6 +6379,12 @@ rel_remove_join(mvc *sql, sql_rel *rel, 
 static sql_rel *
 rel_push_project_up(mvc *sql, sql_rel *rel, int *changes)
 {
+   if (is_simple_project(rel->op) && rel->l && !rel_is_ref(rel)) {
+   sql_rel *l = rel->l;
+   if (is_simple_project(l->op))
+   return rel_merge_projects(sql, rel, changes);
+   }
+
/* project/project cleanup is done later */
if (is_join(rel->op) || is_select(rel->op)) {
node *n;
@@ -7553,7 +7559,7 @@ rel_simplify_like_select(mvc *sql, sql_r
 static sql_exp *
 rel_simplify_predicates(mvc *sql, sql_rel *rel, sql_exp *e, int depth, int 
*changes)
 {
-   (void) depth;
+   (void)depth;
if (is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) {
if (is_atom(e->type) && ((!e->l && !e->r && !e->f) || e->r)) /* 
prepared statement parameter or argument */
return e;
@@ -7587,8 +7593,7 @@ rel_simplify_predicates(mvc *sql, sql_re
list *args = l->l;
sql_exp *ie = args->h->data;
 
-   /* TODO, we have to fix the NOT NULL 
flag propagation on columns after an outer join, so we can remove the 
is_outerjoin check */
-   if (!is_outerjoin(rel->op) && 
(!has_nil(ie) || exp_is_not_null(sql, ie))) { /* is null on something that is 
never null, is always false */
+   if (!has_nil(ie) || 
exp_is_not_null(sql, ie)) { /* is null on something that is never null, is 
always false */
ie = exp_atom_bool(sql->sa, 0);
(*changes)++;
e->l = ie;
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -238,7 +238,7 @@ rel_issubquery(sql_rel*r)
 }
 
 static sql_rel *
-rel_bind_column_(mvc *sql, sql_rel **p, sql_rel *rel, const char *cname, int 
no_tname)
+rel_bind_column_(mvc *sql, int *exp_has_nil, sql_rel *rel, const char *cname, 
int no_tname)
 {
int ambiguous = 0;
sql_rel *l = NULL, *r = NULL;
@@ -253,15 +253,12 @@ rel_bind_column_(mvc *sql, sql_rel **p, 
case op_full: {
sql_rel *right = rel->r;
 
-   *p = rel;
-   r = rel_bind_column_(sql, p, rel->r, cname, no_tname);
-
+   r = rel_bind_column_(sql, exp_has_nil, rel->r, cname, no_tname);
if (!r || !rel_issubquery(right)) {
sql_exp *e = r?exps_bind_column(r->exps, cname, 
, 0):NULL;
 
if (!r || !e || !is_freevar(e)) {
-   *p = rel;
-   l = rel_bind_column_(sql, p, rel->l, cname, 
no_tname);
+   l = rel_bind_column_(sql, exp_has_nil, rel->l, 
cname, no_tname);
if (l && r && !rel_issubquery(r) && 
!is_dependent(rel)) {
(void) sql_error(sql, ERR_AMBIGUOUS, 
SQLSTATE(42000) "SELECT: identifier '%s' ambiguous", cname);
return NULL;
@@ -270,8 +267,13 @@ rel_bind_column_(mvc *sql, sql_rel **p, 
}
if (sql->session->status == -ERR_AMBIGUOUS)
return NULL;
-   if (l && !r)
+   if (l && !r) {
+   if (is_full(rel->op) || is_right(rel->op))
+   *exp_has_nil = 1;
return l;
+   }
+   if (r && (is_full(rel->op) || is_left(rel->op)))
+   *exp_has_nil = 1;
return r;
}
case op_union:
@@ -289,11 +291,10 @@ rel_bind_column_(mvc *sql, sql_rel **p, 
 

MonetDB: Jun2020 - Added rewrite_split_select_exps rewriter, whi...

2020-05-19 Thread Pedro Ferreira
Changeset: aac6159ee0db for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aac6159ee0db
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_optimizer.c
sql/server/rel_unnest.c
Branch: Jun2020
Log Message:

Added rewrite_split_select_exps rewriter, which splits selects expressions in 
two levels:
simple expressions (ie no freevars or subrelations) to the bottom select and 
others to the top select.

After unnesting, simple selections will remain on the bottom, thus there will 
be no need to push down these expressions again.
This fixes a performance issue on tpcds q41.

Also extended rel_push_topn_and_sample_down optimizer to merge nested topN 
relations with no offsets.
Also fixed on rel2bin_semijoin without expressions, where the projection of the 
right relation would be ignored, thus leaving to wrong results.


diffs (110 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2635,6 +2635,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
}
} else {
+   right = subrel_project(be, right, refs, rel->r);
stmt *l = bin_first_column(be, left);
stmt *r = bin_first_column(be, right);
join = stmt_join(be, l, r, 0, cmp_all, 0, false); 
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
@@ -2082,6 +2082,31 @@ rel_push_topn_and_sample_down(mvc *sql, 
operator_type relation_type = is_topn(rel->op) ? op_topn : 
op_sample;
sql_rel *(*func) (sql_allocator *, sql_rel *, list *) = 
is_topn(rel->op) ? rel_topn : rel_sample;
 
+   /* nested topN relations without offset */
+   if (r && is_topn(rel->op) && is_topn(r->op) && 
list_length(rel->exps) == 1 && list_length(r->exps) == 1) {
+   sql_exp *topN1 = rel->exps->h->data, *topN2 = 
r->exps->h->data;
+
+   if (topN1->l && topN2->l) {
+   atom *a1 = (atom *)topN1->l, *a2 = (atom 
*)topN2->l;
+
+   if (a1->tpe.type->localtype == 
a2->tpe.type->localtype && !a1->isnull && !a2->isnull) {
+   if (atom_cmp(a1, a2) < 0) {
+   rel->l = r->l;
+   r->l = NULL;
+   rel_destroy(r);
+   (*changes)++;
+   return rel;
+   } else {
+   rel->l = NULL;
+   rel_destroy(rel);
+   rel = r;
+   (*changes)++;
+   return rel;
+   }
+   }
+   }
+   }
+
if (r && is_simple_project(r->op) && need_distinct(r)) 
return rel;
 
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1819,6 +1819,51 @@ rewrite_or_exp(mvc *sql, sql_rel *rel, i
return rel;
 }
 
+static sql_rel *
+rewrite_split_select_exps(mvc *sql, sql_rel *rel, int *changes)
+{
+   if (is_select(rel->op) && !list_empty(rel->exps)) {
+   int i = 0;
+   bool has_complex_exps = false, has_simple_exps = false, 
*complex_exps = (bool*) GDKmalloc(list_length(rel->exps) * sizeof(bool));
+
+   if (!complex_exps)
+   return sql_error(sql, 02, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+
+   for (node *n = rel->exps->h ; n ; n = n->next) {
+   sql_exp *e = n->data;
+
+   if (exp_has_rel(e) || exp_has_freevar(sql, e)) {
+   complex_exps[i] = true;
+   has_complex_exps = true;
+   } else {
+   complex_exps[i] = false;
+   has_simple_exps = true;
+   }
+   i++;
+   }
+
+   if (has_complex_exps && has_simple_exps) {
+   sql_rel *nsel = rel_select_copy(sql->sa, rel->l, NULL);
+   rel->l = nsel;
+
+   i = 0;
+   for (node *n = rel->exps->h ; n ; ) {
+   node *nxt = n->next;
+
+   if (!complex_exps[i]) {
+   rel_select_add_exp(sql->sa, nsel, 

MonetDB: mbedded - improve getaddrinfo detection, fix bug and ad...

2020-05-19 Thread Arjen de Rijke
Changeset: 2d6202baf6fb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2d6202baf6fb
Added Files:
ctest/cmake/detect-getaddrinfo.cmake
ctest/cmake/detect-unixgetaddrinfo.cmake
ctest/cmake/detect-wingetaddrinfo.cmake
ctest/cmake/test_detect_getaddrinfo.c.in
ctest/cmake/test_detect_unixgetaddrinfo.c.in
ctest/cmake/test_detect_wingetaddrinfo.c.in
Modified Files:
cmake/monetdb-defines.cmake
ctest/cmake/CMakeLists.txt
ctest/cmake/detect-lzma.cmake
ctest/cmake/detect-readline.cmake
Branch: mbedded
Log Message:

improve getaddrinfo detection, fix bug and add tests


diffs (truncated from 361 to 300 lines):

diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -6,6 +6,10 @@
 # Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
 #]]
 
+# This function should only run find functions. The resulting
+# variables will have the correct scope. If you need to set
+# additional variables, for example for legacy defines, do this
+# in the "monetdb_macro_variables" macro.
 function(monetdb_configure_defines)
   find_path(HAVE_DISPATCH_DISPATCH_H "dispatch/dispatch.h")
   find_path(HAVE_DLFCN_H "dlfcn.h")
@@ -54,13 +58,6 @@ function(monetdb_configure_defines)
   check_symbol_exists("S_ISREG" "sys/stat.h" HAVE_SYS_STAT_H)
   check_symbol_exists("getaddrinfo" "netdb.h" UNIX_GETADDRINFO)
   check_symbol_exists("getaddrinfo" "ws2tcpip.h" WIN_GETADDRINFO)
-  if(UNIX_GETADDRINF)
-set(HAVE_GETADDRINFO 1 PARENT_SCOPE)
-  endif()
-  if(WIN_GETADDRINF)
-set(HAVE_GETADDRINFO 1 PARENT_SCOPE)
-  endif()
-
   #check_symbol_exists("WSADATA" "winsock2.h" HAVE_WINSOCK_H)
   check_symbol_exists("fdatasync" "unistd.h" HAVE_FDATASYNC)
   # Some libc versions on Linux distributions don't have it
@@ -152,6 +149,13 @@ macro(monetdb_macro_variables)
 set(SOCKET_LIBRARIES "ws2_32")
   endif()
 
+  if(UNIX_GETADDRINFO)
+set(HAVE_GETADDRINFO 1)
+  endif()
+  if(WIN_GETADDRINFO)
+set(HAVE_GETADDRINFO 1)
+  endif()
+
   set(DIR_SEP  "/")
   set(PATH_SEP ":")
   set(DIR_SEP_STR  "/")
diff --git a/ctest/cmake/CMakeLists.txt b/ctest/cmake/CMakeLists.txt
--- a/ctest/cmake/CMakeLists.txt
+++ b/ctest/cmake/CMakeLists.txt
@@ -61,5 +61,8 @@ add_test(testDetectProj test_detect_proj
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-netcdf.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-lzma.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/detect-readline.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-unixgetaddrinfo.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-wingetaddrinfo.cmake)
+include(${CMAKE_CURRENT_SOURCE_DIR}/detect-getaddrinfo.cmake)
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/set-dir-vars.cmake)
diff --git a/ctest/cmake/detect-getaddrinfo.cmake 
b/ctest/cmake/detect-getaddrinfo.cmake
new file mode 100644
--- /dev/null
+++ b/ctest/cmake/detect-getaddrinfo.cmake
@@ -0,0 +1,64 @@
+#[[
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+#]]
+
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION)
+endif()
+
+if (${LINUX_DISTRO} STREQUAL "debian")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "9")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "10")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+elseif (${LINUX_DISTRO} STREQUAL "ubuntu")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "18")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "19")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "20")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+elseif(${LINUX_DISTRO} STREQUAL "fedora")
+  if(${LINUX_DISTRO_VERSION} STREQUAL "30")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "31")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+  if(${LINUX_DISTRO_VERSION} STREQUAL "32")
+set(DETECT "0")
+set(UNDETECT "1")
+  endif()
+else()
+  message(ERROR "Linux distro: ${LINUX_DISTRO} not known")
+  message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known")
+endif()
+
+configure_file(test_detect_getaddrinfo.c.in
+  ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c
+  @ONLY)
+
+add_executable(test_detect_getaddrinfo)
+target_sources(test_detect_getaddrinfo
+  PRIVATE
+  ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c)
+target_link_libraries(test_detect_getaddrinfo
+  PRIVATE
+  monetdb_config_header)
+add_test(testDetectGetaddrinfo test_detect_getaddrinfo)
diff --git a/ctest/cmake/detect-lzma.cmake b/ctest/cmake/detect-lzma.cmake
--- a/ctest/cmake/detect-lzma.cmake

MonetDB: mbedded - merged with default

2020-05-19 Thread Niels Nes
Changeset: 118ae3b5f3c5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=118ae3b5f3c5
Modified Files:
sql/server/rel_select.c
Branch: mbedded
Log Message:

merged with default


diffs (20 lines):

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
@@ -2133,13 +2133,13 @@ rel_in_value_exp(sql_query *query, sql_r
supertype(, exp_subtype(values), exp_subtype(le));
 
/* on selection/join cases we can generate cmp 
expressions instead of anyequal for trivial cases */
-   if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le)) {
-   if (list_length(vals) == 1 && 
!exps_have_rel_exp(vals)) { /* use cmp_equal instead of cmp_in for 1 expression 
*/
+   if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le) && exps_are_atoms(vals)) {
+   if (list_length(vals) == 1) { /* use cmp_equal 
instead of cmp_in for 1 expression */
sql_exp *first = vals->h->data;
if (rel_convert_types(sql, rel ? *rel : 
NULL, rel ? *rel : NULL, , , 1, type_equal_no_any) < 0)
return NULL;
e = exp_compare(sql->sa, le, first, 
(sc->token == SQL_IN) ? cmp_equal : cmp_notequal);
-   } else if (exps_are_atoms(vals)) { /* use 
cmp_in instead of anyequal for n simple expressions */
+   } else { /* use cmp_in instead of anyequal for 
n simple expressions */
for (node *n = vals->h ; n ; n = 
n->next)
if ((n->data = 
rel_check_type(sql, , rel ? *rel : NULL, n->data, type_equal)) == NULL)
return NULL;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Don't optimize too much, rewrite cmp_in to cm...

2020-05-19 Thread Pedro Ferreira
Changeset: 066bf9d6e967 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=066bf9d6e967
Modified Files:
sql/server/rel_select.c
Branch: default
Log Message:

Don't optimize too much, rewrite cmp_in to cmp_equal just for constants, 
otherwise is not equivalent


diffs (20 lines):

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
@@ -2133,13 +2133,13 @@ rel_in_value_exp(sql_query *query, sql_r
supertype(, exp_subtype(values), exp_subtype(le));
 
/* on selection/join cases we can generate cmp 
expressions instead of anyequal for trivial cases */
-   if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le)) {
-   if (list_length(vals) == 1 && 
!exps_have_rel_exp(vals)) { /* use cmp_equal instead of cmp_in for 1 expression 
*/
+   if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le) && exps_are_atoms(vals)) {
+   if (list_length(vals) == 1) { /* use cmp_equal 
instead of cmp_in for 1 expression */
sql_exp *first = vals->h->data;
if (rel_convert_types(sql, rel ? *rel : 
NULL, rel ? *rel : NULL, , , 1, type_equal_no_any) < 0)
return NULL;
e = exp_compare(sql->sa, le, first, 
(sc->token == SQL_IN) ? cmp_equal : cmp_notequal);
-   } else if (exps_are_atoms(vals)) { /* use 
cmp_in instead of anyequal for n simple expressions */
+   } else { /* use cmp_in instead of anyequal for 
n simple expressions */
for (node *n = vals->h ; n ; n = 
n->next)
if ((n->data = 
rel_check_type(sql, , rel ? *rel : NULL, n->data, type_equal)) == NULL)
return NULL;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list