Changeset: e02054f2f764 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e02054f2f764
Added Files:
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_emptybind.h
        monetdb5/optimizer/opt_jit.c
        monetdb5/optimizer/opt_jit.h
Modified Files:
        NT/installer64/MonetDB5-SQL-Installer.vdproj
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/SQL-dump.stable.out
        clients/Tests/SQL-dump.stable.out.int128
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_atoms.c
        gdk/gdk_bbp.c
        gdk/gdk_calc.c
        gdk/gdk_calc_compare.h
        gdk/gdk_firstn.c
        gdk/gdk_group.c
        gdk/gdk_hash.h
        gdk/gdk_join.c
        gdk/gdk_select.c
        gdk/gdk_utils.c
        gdk/gdk_value.c
        geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
        java/ChangeLog.Jun2016
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single
        monetdb5/extras/mal_optimizer_template/opt_sql_append.c
        monetdb5/extras/rapi/Tests/rapi02.malC
        monetdb5/extras/rapi/Tests/rapi02.stable.out
        monetdb5/mal/Tests/tst901a.stable.out
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_builder.h
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_function.h
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_interpreter.h
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_listing.h
        monetdb5/mal/mal_namespace.c
        monetdb5/mal/mal_private.h
        monetdb5/modules/atoms/str.c
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/kernel/aggr.mal
        monetdb5/modules/kernel/aggr.mal.sh
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.h
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/bat5.h
        monetdb5/modules/kernel/bat5.mal
        monetdb5/modules/kernel/microbenchmark.c
        monetdb5/modules/kernel/microbenchmark.h
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/00_calc_hge.mal
        monetdb5/modules/mal/00_mkey_hge.mal
        monetdb5/modules/mal/01_batcalc.mal
        monetdb5/modules/mal/Tests/inspect05.stable.out
        monetdb5/modules/mal/Tests/inspect05.stable.out.int128
        monetdb5/modules/mal/Tests/remote03.stable.err
        monetdb5/modules/mal/batExtensions.c
        monetdb5/modules/mal/batcalc.c
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/mkey.c
        monetdb5/modules/mal/mkey.h
        monetdb5/modules/mal/mkey.mal
        monetdb5/modules/mal/projectionpath.c
        monetdb5/modules/mal/querylog.c
        monetdb5/modules/mal/querylog.mal
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sample.mal
        monetdb5/modules/mal/tokenizer.c
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/Tests/dataflow.stable.out
        monetdb5/optimizer/Tests/dataflow3.malC
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/Tests/manifold2.stable.out
        monetdb5/optimizer/Tests/manifold2.stable.out.single
        monetdb5/optimizer/opt_aliases.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_querylog.c
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.mal
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
        sql/backends/monet5/UDF/pyapi/Tests/pyapi_types_numeric.malC
        sql/backends/monet5/UDF/pyapi/Tests/pyapi_types_string.malC
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_cast.h
        sql/backends/monet5/sql_cast_impl_down_from_int.h
        sql/backends/monet5/sql_decimal.mal
        sql/backends/monet5/sql_decimal.mal.sh
        sql/backends/monet5/sql_decimal_hge.mal
        sql/backends/monet5/sql_decimal_hge.mal.sh
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_execute.h
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_optimizer.h
        sql/backends/monet5/sql_round.c
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_scenario.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out
        sql/backends/monet5/vaults/bam/Tests/query2.5.stable.out
        sql/backends/monet5/vaults/bam/Tests/query2.5.stable.out.int128
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/04-explain.stable.out
        sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/05-explain.stable.out
        sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/06-explain.stable.out
        sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/11-explain.stable.out
        sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/12-explain.stable.out
        sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/13-explain.stable.out
        sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/01-explain.stable.out
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/02-plan.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/04-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-plan.stable.out
        sql/benchmarks/tpch/Tests/10-plan.stable.out.int128
        sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/13-explain.stable.out
        sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/15-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/16-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/18-plan.stable.out
        sql/benchmarks/tpch/Tests/18-plan.stable.out.int128
        sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        sql/benchmarks/tpch/Tests/21-plan.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
        sql/common/sql_types.c
        sql/jdbc/tests/Tests/Test_Dobjects.stable.out
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_rel.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/server/sql_atom.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.y
        sql/server/sql_qc.c
        sql/server/sql_qc.h
        sql/server/sql_symbol.h
        sql/storage/bat/bat_storage.c
        sql/storage/store.c
        sql/test/ADT2006/Tests/bram.stable.out
        sql/test/BugTracker-2009/Tests/All
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.err
        sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out
        sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2013/Tests/between.Bug-3259.sql
        sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out
        sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128
        sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128.single
        sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.single
        sql/test/BugTracker-2013/Tests/correlated_select.Bug-3250.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out.single
        sql/test/BugTracker-2014/Tests/temporary.Bug-3430.stable.err
        sql/test/BugTracker-2015/Tests/ambiguous.Bug-3803.stable.out.int128
        sql/test/BugTracker-2015/Tests/apply_merge_distinct.Bug-3760.stable.out
        sql/test/BugTracker-2015/Tests/long_insert.Bug-3845.stable.err
        sql/test/BugTracker-2015/Tests/long_insert.Bug-3845.stable.out
        sql/test/BugTracker-2015/Tests/missed-error.Bug-3842.stable.out
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2016/Tests/All
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        
sql/test/BugTracker/Tests/alter_col_to_set_same_constraint.SF-1850781.stable.err
        sql/test/BugTracker/Tests/alter_table_add_fkey.SF-1737668.stable.err
        sql/test/BugTracker/Tests/alter_table_set_not_null.SF-1997030.stable.err
        sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err
        sql/test/BugTracker/Tests/auto_increment.SF-1834820.stable.err
        sql/test/BugTracker/Tests/between_having_problem.SF-1959391.stable.err
        sql/test/BugTracker/Tests/between_with_column.SF-1959410.stable.err
        sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
        sql/test/BugTracker/Tests/broken_join.SF-1373391.stable.err
        sql/test/BugTracker/Tests/coalesce_equal_coalesce.SF-1907905.stable.err
        sql/test/BugTracker/Tests/copy_decimal.SF-1582957.stable.err
        sql/test/BugTracker/Tests/copy_overflow_null_bug.SF-1842550.stable.err
        sql/test/BugTracker/Tests/crash_on_fkey_update.SF-1703497.stable.err
        sql/test/BugTracker/Tests/crash_on_fkey_update2.SF-1703497.stable.err
        sql/test/BugTracker/Tests/create_column.SF-1643542.stable.err
        
sql/test/BugTracker/Tests/create_same_temp_tab_after_its_drop.SF-1850809.stable.err
        
sql/test/BugTracker/Tests/creation_of_exeception_for_select.SF-1841749.stable.err
        sql/test/BugTracker/Tests/drop_system_tables.SF-1550768.stable.err
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/insert_date.SF-1838785.stable.err
        sql/test/BugTracker/Tests/insert_not_exists.SF-1380287.stable.out
        sql/test/BugTracker/Tests/insert_values.SF-1578838.stable.err
        
sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
        sql/test/BugTracker/Tests/multivalue_insert.SF-1509864.stable.err
        sql/test/BugTracker/Tests/number_null_first_row.SF-1833286.stable.err
        sql/test/BugTracker/Tests/reset_session_vars.SF-1505987.stable.err
        sql/test/BugTracker/Tests/revoke_role.SF-1691646.stable.err
        sql/test/BugTracker/Tests/set_a_new_user_password.SF-1844050.stable.err
        sql/test/BugTracker/Tests/set_operation_coersions.SF-1543216.stable.err
        sql/test/BugTracker/Tests/string2int_conversion.SF-1356068.stable.err
        
sql/test/BugTracker/Tests/table_dependency_inside_union.SF-1884382.stable.err
        sql/test/BugTracker/Tests/temporary_tables.SF-1715669.stable.err
        
sql/test/BugTracker/Tests/update_fkey_with_value_not_in_the_pkey.SF-1734143.stable.err
        sql/test/BugTracker/Tests/update_pkey_bug.SF-1733712.stable.err
        sql/test/BugTracker/Tests/variables.SF-1508160.stable.err
        sql/test/BugTracker/Tests/view_creation_using_func.SF-1714814.stable.err
        sql/test/Dependencies/Tests/dependency_loop.stable.out
        sql/test/Dependencies/Tests/dependency_loop.stable.out.int128
        sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out
        
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out.int128
        sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out
        
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out.int128
        sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
        
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out.int128
        sql/test/Tests/median_stdev.stable.out
        sql/test/Tests/setoptimizer.stable.out
        sql/test/Tests/setoptimizer.stable.out.Windows
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/Triggers/trigger_insert.sql
        sql/test/bugs/Tests/alter_add_column-bug.stable.err
        sql/test/leaks/Tests/check0.stable.out
        sql/test/leaks/Tests/check0.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check2.stable.out.int128
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check3.stable.out.int128
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check4.stable.out.int128
        sql/test/leaks/Tests/check5.stable.out
        sql/test/leaks/Tests/check5.stable.out.int128
        sql/test/leaks/Tests/drop3.stable.out
        sql/test/leaks/Tests/drop3.stable.out.int128
        sql/test/leaks/Tests/select1.stable.out
        sql/test/leaks/Tests/select1.stable.out.int128
        sql/test/leaks/Tests/select2.stable.out
        sql/test/leaks/Tests/select2.stable.out.int128
        sql/test/leaks/Tests/temp1.stable.out
        sql/test/leaks/Tests/temp1.stable.out.int128
        sql/test/leaks/Tests/temp2.stable.out
        sql/test/leaks/Tests/temp2.stable.out.int128
        sql/test/leaks/Tests/temp3.stable.out
        sql/test/leaks/Tests/temp3.stable.out.int128
        sql/test/mapi/Tests/sql_int128.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/pg_regress/Tests/boolean.stable.err
        sql/test/pg_regress/Tests/char.stable.err
        sql/test/pg_regress/Tests/comments.stable.err
        sql/test/pg_regress/Tests/create_aggregate.stable.err
        sql/test/pg_regress/Tests/date.stable.err
        sql/test/pg_regress/Tests/drop.stable.err
        sql/test/pg_regress/Tests/float4.stable.err
        sql/test/pg_regress/Tests/float8.stable.out
        sql/test/pg_regress/Tests/inet.stable.err
        sql/test/pg_regress/Tests/insert.stable.err
        sql/test/pg_regress/Tests/int2.stable.err
        sql/test/pg_regress/Tests/int4.stable.err
        sql/test/pg_regress/Tests/interval.stable.out
        sql/test/pg_regress/Tests/limit.stable.err
        sql/test/pg_regress/Tests/numeric.stable.err
        sql/test/pg_regress/Tests/numerology.stable.err
        sql/test/pg_regress/Tests/oid.stable.err.int128
        sql/test/pg_regress/Tests/random.stable.out
        sql/test/pg_regress/Tests/strings_concat.stable.err
        sql/test/pg_regress/Tests/timestamp.stable.err
        sql/test/pg_regress/Tests/timestamp.stable.out
        sql/test/pg_regress/Tests/timestamptz.stable.err
        sql/test/pg_regress/Tests/timestamptz.stable.out
        sql/test/pg_regress/Tests/vacuum.stable.out
        sql/test/pg_regress/Tests/varchar.stable.err
        sql/test/pg_regress/Tests/without_oid.stable.err
        sql/test/pg_regress/Tests/without_oid.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
        sql/test/testdb/Tests/testdb-dump.stable.out
        sql/test/testdb/Tests/testdb-dump.stable.out.Windows
        sql/test/testdb/Tests/testdb-load.sql
Branch: default
Log Message:

Merge the jit branch into default.


diffs (truncated from 13323 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -8156,6 +8156,8 @@ Ready.
 [ "optimizer", "deadcode",     "pattern 
optimizer.deadcode(mod:str,fcn:str):str ",     "OPTwrapper;",  "Dead code 
optimizer"   ]
 [ "optimizer", "derivePath",   "pattern optimizer.derivePath():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "derivePath",   "pattern 
optimizer.derivePath(mod:str,fcn:str):str ",   "OPTwrapper;",  "Join path 
constructor" ]
+[ "optimizer", "emptybind",    "pattern optimizer.emptybind():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "emptybind",    "pattern 
optimizer.emptybind(mod:str,fcn:str):str ",    "OPTwrapper;",  "Evaluate empty 
set expressions."       ]
 [ "optimizer", "evaluate",     "pattern optimizer.evaluate():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "evaluate",     "pattern 
optimizer.evaluate(mod:str,fcn:str):str ",     "OPTwrapper;",  "Evaluate 
constant expressions once."   ]
 [ "optimizer", "factorize",    "pattern optimizer.factorize():str ",   
"OPTwrapper;",  ""      ]
@@ -8166,6 +8168,8 @@ Ready.
 [ "optimizer", "generator",    "pattern 
optimizer.generator(mod:str,fcn:str):str ",    "OPTwrapper;",  "Sequence 
generator optimizer"  ]
 [ "optimizer", "inline",       "pattern optimizer.inline():str ",      
"OPTwrapper;",  ""      ]
 [ "optimizer", "inline",       "pattern optimizer.inline(mod:str,fcn:str):str 
",       "OPTwrapper;",  "Expand inline functions"       ]
+[ "optimizer", "jit",  "pattern optimizer.jit():str ", "OPTwrapper;",  ""      
]
+[ "optimizer", "jit",  "pattern optimizer.jit(mod:str,fcn:str):str ",  
"OPTwrapper;",  "Propagate candidate lists in just-in-time optimization"        
]
 [ "optimizer", "joinselect",   "pattern optimizer.joinselect():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "joinselect",   "pattern 
optimizer.joinselect(mod:str,fcn:str):str ",   "OPTwrapper;",  "Replace select 
with join select"       ]
 [ "optimizer", "json", "pattern optimizer.json():str ",        "OPTwrapper;",  
""      ]
@@ -8381,6 +8385,14 @@ Ready.
 [ "sql",       "dump_cache",   "pattern sql.dump_cache() 
(query:bat[:str],count:bat[:int]) ",  "dump_cache;",  "dump the content of the 
query cache"   ]
 [ "sql",       "dump_opt_stats",       "pattern sql.dump_opt_stats() 
(rewrite:bat[:str],count:bat[:int]) ",    "dump_opt_stats;",      "dump the 
optimizer rewrite statistics" ]
 [ "sql",       "dump_trace",   "pattern sql.dump_trace() 
(event:bat[:int],clk:bat[:str],pc:bat[:str],thread:bat[:int],ticks:bat[:lng],rssMB:bat[:lng],vmMB:bat[:lng],reads:bat[:lng],writes:bat[:lng],minflt:bat[:lng],majflt:bat[:lng],nvcsw:bat[:lng],stmt:bat[:str])
 ",     "dump_trace;",  "dump the trace statistics"     ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) ",  "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int):bat[:any_1] 
",       "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) ", "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 ",      "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) ",        "mvc_bind_idxbat_wrap;",        ""   
   ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int):bat[:any_1] 
",     "mvc_bind_idxbat_wrap;",        ""      ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) ",       "mvc_bind_idxbat_wrap;",        ""   
   ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 ",    "mvc_bind_idxbat_wrap;",        ""      ]
 [ "sql",       "epilogue",     "command sql.epilogue():void ", "SQLepilogue;", 
""      ]
 [ "sql",       "eval", "pattern sql.eval(cmd:str):void ",      
"SQLstatement;",        "Compile and execute a single sql statement"    ]
 [ "sql",       "eval", "pattern sql.eval(cmd:str,output:bit):void ",   
"SQLstatement;",        "Compile and execute a single sql statement (and 
optionaly send output on the output stream)"   ]
@@ -8630,7 +8642,7 @@ Ready.
 [ "url",       "url",  "command url.url(s:str):url ",  "URLnew;",      "Create 
an URL from a string literal"   ]
 [ "url",       "url",  "command url.url(s:url):url ",  "URLnoop;",     "Create 
an URL from a string literal"   ]
 [ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "s1_1", "function user.s1_1():void;",   "",     ""      ]
+[ "user",      "s2_1", "function user.s2_1():void;",   "",     ""      ]
 [ "user",      "sql.init",     "function user.sql.init():void;",       "",     
""      ]
 [ "uuid",      "#cmp", "command uuid.#cmp():void ",    "UUIDcompare;", ""      
]
 [ "uuid",      "#fromstr",     "command uuid.#fromstr():void ",        
"UUIDfromString;",      ""      ]
@@ -8692,6 +8704,28 @@ Ready.
 [ "zrule",     "define",       "command 
zrule.define(m:int,d:int,w:int,h:int,min:int):zrule ", "MTIMEruleDef0;",       
"Introduce a synomym timezone rule."    ]
 [ "zrule",     "define",       "command 
zrule.define(m:int,d:str,w:int,h:int,min:int):zrule ", "MTIMEruleDef1;",       
"Introduce a synomym timezone rule."    ]
 [ "zrule",     "define",       "command 
zrule.define(m:int,d:str,w:int,min:int):zrule ",       "MTIMEruleDef2;",       
"Introduce a synomym timezone rule."    ]
+pattern optimizer.emptycolumn(mod:str,fcn:str):str 
+address OPTwrapper;
+comment Evaluate empty set expressions.
+
+pattern optimizer.emptycolumn():str 
+address OPTwrapper;
+pattern 
sql.emptycolumn(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) 
+address mvc_bind_wrap;
+pattern 
sql.emptycolumn(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 
+address mvc_bind_wrap;
+pattern sql.emptycolumn(mvc:int,schema:str,table:str,column:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) 
+address mvc_bind_wrap;
+pattern 
sql.emptycolumn(mvc:int,schema:str,table:str,column:str,access:int):bat[:any_1] 
+address mvc_bind_wrap;
+pattern 
sql.emptycolumnidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) 
+address mvc_bind_idxbat_wrap;
+pattern 
sql.emptycolumnidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 
+address mvc_bind_idxbat_wrap;
+pattern sql.emptycolumnidx(mvc:int,schema:str,table:str,index:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) 
+address mvc_bind_idxbat_wrap;
+pattern 
sql.emptycolumnidx(mvc:int,schema:str,table:str,index:str,access:int):bat[:any_1]
 
+address mvc_bind_idxbat_wrap;
 
 # 14:39:23 >  
 # 14:39:23 >  "Done."
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -10523,6 +10523,8 @@ Ready.
 [ "optimizer", "deadcode",     "pattern 
optimizer.deadcode(mod:str,fcn:str):str ",     "OPTwrapper;",  "Dead code 
optimizer"   ]
 [ "optimizer", "derivePath",   "pattern optimizer.derivePath():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "derivePath",   "pattern 
optimizer.derivePath(mod:str,fcn:str):str ",   "OPTwrapper;",  "Join path 
constructor" ]
+[ "optimizer", "emptybind",    "pattern optimizer.emptybind():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "emptybind",    "pattern 
optimizer.emptybind(mod:str,fcn:str):str ",    "OPTwrapper;",  "Evaluate empty 
set expressions."       ]
 [ "optimizer", "evaluate",     "pattern optimizer.evaluate():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "evaluate",     "pattern 
optimizer.evaluate(mod:str,fcn:str):str ",     "OPTwrapper;",  "Evaluate 
constant expressions once."   ]
 [ "optimizer", "factorize",    "pattern optimizer.factorize():str ",   
"OPTwrapper;",  ""      ]
@@ -10533,6 +10535,8 @@ Ready.
 [ "optimizer", "generator",    "pattern 
optimizer.generator(mod:str,fcn:str):str ",    "OPTwrapper;",  "Sequence 
generator optimizer"  ]
 [ "optimizer", "inline",       "pattern optimizer.inline():str ",      
"OPTwrapper;",  ""      ]
 [ "optimizer", "inline",       "pattern optimizer.inline(mod:str,fcn:str):str 
",       "OPTwrapper;",  "Expand inline functions"       ]
+[ "optimizer", "jit",  "pattern optimizer.jit():str ", "OPTwrapper;",  ""      
]
+[ "optimizer", "jit",  "pattern optimizer.jit(mod:str,fcn:str):str ",  
"OPTwrapper;",  "Propagate candidate lists in just-in-time optimization"        
]
 [ "optimizer", "joinselect",   "pattern optimizer.joinselect():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "joinselect",   "pattern 
optimizer.joinselect(mod:str,fcn:str):str ",   "OPTwrapper;",  "Replace select 
with join select"       ]
 [ "optimizer", "json", "pattern optimizer.json():str ",        "OPTwrapper;",  
""      ]
@@ -10749,6 +10753,14 @@ Ready.
 [ "sql",       "dump_cache",   "pattern sql.dump_cache() 
(query:bat[:str],count:bat[:int]) ",  "dump_cache;",  "dump the content of the 
query cache"   ]
 [ "sql",       "dump_opt_stats",       "pattern sql.dump_opt_stats() 
(rewrite:bat[:str],count:bat[:int]) ",    "dump_opt_stats;",      "dump the 
optimizer rewrite statistics" ]
 [ "sql",       "dump_trace",   "pattern sql.dump_trace() 
(event:bat[:int],clk:bat[:str],pc:bat[:str],thread:bat[:int],ticks:bat[:lng],rssMB:bat[:lng],vmMB:bat[:lng],reads:bat[:lng],writes:bat[:lng],minflt:bat[:lng],majflt:bat[:lng],nvcsw:bat[:lng],stmt:bat[:str])
 ",     "dump_trace;",  "dump the trace statistics"     ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) ",  "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int):bat[:any_1] 
",       "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) ", "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybind",    "pattern 
sql.emptybind(mvc:int,schema:str,table:str,column:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 ",      "mvc_bind_wrap;",       ""      ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int) 
(uid:bat[:oid],uval:bat[:any_1]) ",        "mvc_bind_idxbat_wrap;",        ""   
   ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int):bat[:any_1] 
",     "mvc_bind_idxbat_wrap;",        ""      ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int)
 (uid:bat[:oid],uval:bat[:any_1]) ",       "mvc_bind_idxbat_wrap;",        ""   
   ]
+[ "sql",       "emptybindidx", "pattern 
sql.emptybindidx(mvc:int,schema:str,table:str,index:str,access:int,part_nr:int,nr_parts:int):bat[:any_1]
 ",    "mvc_bind_idxbat_wrap;",        ""      ]
 [ "sql",       "epilogue",     "command sql.epilogue():void ", "SQLepilogue;", 
""      ]
 [ "sql",       "eval", "pattern sql.eval(cmd:str):void ",      
"SQLstatement;",        "Compile and execute a single sql statement"    ]
 [ "sql",       "eval", "pattern sql.eval(cmd:str,output:bit):void ",   
"SQLstatement;",        "Compile and execute a single sql statement (and 
optionaly send output on the output stream)"   ]
@@ -11000,7 +11012,7 @@ Ready.
 [ "url",       "url",  "command url.url(s:str):url ",  "URLnew;",      "Create 
an URL from a string literal"   ]
 [ "url",       "url",  "command url.url(s:url):url ",  "URLnoop;",     "Create 
an URL from a string literal"   ]
 [ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "s1_1", "function user.s1_1():void;",   "",     ""      ]
+[ "user",      "s2_1", "function user.s2_1():void;",   "",     ""      ]
 [ "user",      "sql.init",     "function user.sql.init():void;",       "",     
""      ]
 [ "uuid",      "#cmp", "command uuid.#cmp():void ",    "UUIDcompare;", ""      
]
 [ "uuid",      "#fromstr",     "command uuid.#fromstr():void ",        
"UUIDfromString;",      ""      ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1543,12 +1543,14 @@ int OPTconstantsImplementation(Client cn
 int OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 int OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTdeadcodeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+int OPTemptybindImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTevaluateImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 int OPTfactorizeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 int OPTgarbageCollectorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 int OPTgeneratorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 int OPTinlineImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTisAlias(InstrPtr p);
+int OPTjitImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
 int OPTjsonImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTmacro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 int OPTmacroImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
@@ -2016,6 +2018,8 @@ str diffRef;
 str disconnectRef;
 str divRef;
 void dumpExceptionsToStream(stream *out, str msg);
+str emptybindRef;
+str emptybindidxRef;
 str eqRef;
 str escape_str(str *retval, str s);
 str evalFile(Client c, str fname, int listing);
@@ -2163,6 +2167,7 @@ int isUnsafeFunction(InstrPtr q);
 int isUnsafeInstruction(InstrPtr q);
 int isUpdateInstruction(InstrPtr p);
 str iteratorRef;
+str jitRef;
 str jsonRef;
 str languageRef;
 str levenshtein_impl(int *result, str *s, str *t, int *insdel_cost, int 
*replace_cost, int *transpose_cost);
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -55,25 +55,52 @@ Ready.
 % .L # table_name
 % def # name
 % clob # type
-% 541 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.garbageCollector();"
      ]
+% 579 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.garbageCollector();"
        ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
 % clob # type
 % 126 # length
-function user.s4_1():void;
+function user.s8_1():void;
     X_38:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",12);
-barrier X_57 := language.dataflow();
+barrier X_58 := language.dataflow();
     X_0 := sql.mvc();
     (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str);
-exit X_57;
+exit X_58;
     X_25 := sql.append(X_0,"sys","ttt","a",X_21);
     X_30 := sql.append(X_25,"sys","ttt","b",X_22);
     X_33 := sql.append(X_30,"sys","ttt","c",X_23);
     X_35 := aggr.count(X_23);
     sql.affectedRows(X_33,X_35);
-end user.s4_1;
+end user.s8_1;
+#inline               actions= 0 time=1 usec 
+#candidates           actions= 1 time=14 usec 
+#remap                actions= 0 time=3 usec 
+#costModel            actions= 1 time=12 usec 
+#coercions            actions=10 time=13 usec 
+#evaluate             actions= 0 time=2 usec 
+#emptybind            actions= 0 time=4 usec 
+#pushselect           actions= 0 time=3 usec 
+#aliases              actions= 0 time=4 usec 
+#mitosis              actions= 0 time=2 usec 
+#mergetable           actions= 0 time=17 usec 
+#deadcode             actions= 0 time=5 usec 
+#aliases              actions= 0 time=4 usec 
+#constants            actions= 0 time=5 usec 
+#commonTerms          actions= 0 time=4 usec 
+#projectionpath       actions= 0 time=3 usec 
+#deadcode             actions= 0 time=4 usec 
+#reorder              actions= 1 time=19 usec 
+#reduce               actions=33 time=23 usec 
+#matpack              actions= 0 time=3 usec 
+#dataflow             actions=31 time=20 usec 
+#querylog             actions= 0 time=0 usec 
+#multiplex            actions= 0 time=3 usec 
+#generator            actions= 0 time=1 usec 
+#profiler             actions= 1 time=6 usec 
+#garbageCollector     actions= 1 time=13 usec 
+#total                actions= 1 time=245 usec 
 #declare opt_pipe_name string;
 #set opt_pipe_name = ( select optimizer );
 #declare opt_pipe_def  string;
@@ -89,25 +116,53 @@ end user.s4_1;
 % .L # table_name
 % def # name
 % clob # type
-% 564 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.sql_append();optimizer.garbageCollector();"
       ]
+% 602 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.sql_append();optimizer.garbageCollector();"
 ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
 % clob # type
 % 126 # length
-function user.s12_1():void;
+function user.s24_1():void;
     X_38:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",12);
-barrier X_57 := language.dataflow();
+barrier X_58 := language.dataflow();
     X_0 := sql.mvc();
     (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str);
-exit X_57;
+exit X_58;
     X_25 := sql.append(X_0,"sys","ttt","a",X_21);
     X_30 := sql.append(X_25,"sys","ttt","b",X_22);
     X_35 := aggr.count(X_23);
     X_33 := sql.append(X_30,"sys","ttt","c",X_23);
     sql.affectedRows(X_33,X_35);
-end user.s12_1;
+end user.s24_1;
+#inline               actions= 0 time=1 usec 
+#candidates           actions= 1 time=14 usec 
+#remap                actions= 0 time=3 usec 
+#costModel            actions= 1 time=13 usec 
+#coercions            actions=10 time=14 usec 
+#evaluate             actions= 0 time=3 usec 
+#emptybind            actions= 0 time=3 usec 
+#pushselect           actions= 0 time=3 usec 
+#aliases              actions= 0 time=4 usec 
+#mitosis              actions= 0 time=2 usec 
+#mergetable           actions= 0 time=16 usec 
+#deadcode             actions= 0 time=4 usec 
+#aliases              actions= 0 time=4 usec 
+#constants            actions= 0 time=4 usec 
+#commonTerms          actions= 0 time=4 usec 
+#projectionpath       actions= 0 time=3 usec 
+#deadcode             actions= 0 time=4 usec 
+#reorder              actions= 1 time=19 usec 
+#reduce               actions=33 time=23 usec 
+#matpack              actions= 0 time=3 usec 
+#dataflow             actions=32 time=19 usec 
+#querylog             actions= 0 time=1 usec 
+#multiplex            actions= 0 time=3 usec 
+#generator            actions= 0 time=1 usec 
+#profiler             actions= 1 time=7 usec 
+#optimizer.sql_append actions= 1 time=8 usec 
+#garbageCollector     actions= 1 time=19 usec 
+#total                actions= 1 time=261 usec 
 #drop table ttt;
 
 # 22:58:58 >  
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
--- 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
+++ 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
@@ -63,17 +63,44 @@ Ready.
 % clob # type
 % 129 # length
 function user.s4_1():void;
-    X_38:void := querylog.define("explain copy into ttt from 
\\'a:\\\\tmp/xyz\\';","default_pipe",12);
-barrier X_57 := language.dataflow();
-    X_0 := sql.mvc();
-    (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","a:\\tmp/xyz",-1,0,0,0,nil:str);
-exit X_57;
-    X_25 := sql.append(X_0,"sys","ttt","a",X_21);
-    X_30 := sql.append(X_25,"sys","ttt","b",X_22);
-    X_33 := sql.append(X_30,"sys","ttt","c",X_23);
-    X_35 := aggr.count(X_23);
-    sql.affectedRows(X_33,X_35);
-end user.s4_1;
+    X_24:void := querylog.define("explain copy into ttt from 
\\'a:\\\\tmp/xyz\\';","default_pipe",12);
+barrier X_53 := language.dataflow();
+    X_1 := sql.mvc();
+    (X_11:bat[:int],X_12:bat[:int],X_13:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","a:\\tmp/xyz",-1,0,0,0);
+exit X_53;
+    X_14 := sql.append(X_1,"sys","ttt","a",X_11);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to