MonetDB: Jun2020 - Reverting commit 0a084ae8d84f partially, now ...
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.
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.
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
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
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...
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
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
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...
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...
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
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...
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