Changeset: 78c33accfff9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=78c33accfff9 Modified Files: geom/BugTracker/Tests/X_crash.SF-1971632.stable.out sql/backends/monet5/rel_bin.c sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out sql/benchmarks/nobench/Tests/nobench.stable.out sql/benchmarks/ssbm/Tests/check1.stable.out sql/benchmarks/ssbm/Tests/load.stable.out sql/benchmarks/tpcds/Tests/check0.stable.out sql/benchmarks/tpch/LOCKED/Tests/check1.stable.out sql/benchmarks/tpch/LOCKED/Tests/check2.stable.out sql/benchmarks/tpch/LOCKED/Tests/load.stable.out sql/benchmarks/tpch/Tests/check1.stable.out sql/benchmarks/tpch/Tests/load.stable.out sql/test/ADT2006/Tests/benesamo.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/cross_product.SF-1122802.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/multiple_select_on_view.SF-935639.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/singleton_view.SF-933573.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/slow_counting_1.SF-923709.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/slow_counting_2.SF-923709.stable.out sql/test/BugDay_2005-12-19_2.9.3/Tests/delete_cascade.SF-1296395.stable.out sql/test/BugTracker-2008/Tests/copy-count.SF-2485215.stable.out sql/test/BugTracker-2009/Tests/AVG_ReturnsNoLines.SF-2596084.stable.out sql/test/BugTracker-2009/Tests/double_count_limit_bug.SF-2862146.stable.out sql/test/BugTracker-2009/Tests/parallel_bulk-load.SF-2771052.test.stable.out sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-1.stable.out sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-2.stable.out sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_KO-3.stable.out sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_OK-0.stable.out sql/test/BugTracker-2009/Tests/updating_non-loaded_columns.SF-2864313_OK-4.stable.out sql/test/BugTracker-2010/Tests/predicate_in_select.Bug-2535.stable.out sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.out sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.stable.out sql/test/BugTracker-2012/Tests/many-columns-truncated.Bug-3161.stable.out sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out sql/test/BugTracker-2015/Tests/copy_into.Bug-3813.stable.out sql/test/BugTracker-2015/Tests/long_insert.Bug-3845.stable.out sql/test/BugTracker-2016/Tests/DISTINCT_with_correlated_scalar_subquery_crashes_mserver.Bug-3920.stable.out sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out sql/test/BugTracker-2016/Tests/nested-subquery-in-select.Bug-6125.stable.out sql/test/BugTracker-2016/Tests/wrong-nonil-property-with-copy-binary-into.Bug-3937.stable.out sql/test/BugTracker-2017/Tests/crash_on_count_div_count.Bug-6201.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-select-in-column.Bug-6490.stable.out sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.out sql/test/BugTracker-2018/Tests/copy-into-doubled.Bug-6666.stable.out sql/test/BugTracker-2018/Tests/truncate_bam_tables.Bug-6543.stable.out sql/test/BugTracker-2018/Tests/truncate_empty_table.Bug-6544.stable.out sql/test/BugTracker-2018/Tests/truncate_geom_tables.Bug-6543.stable.out sql/test/BugTracker-2018/Tests/truncate_sys_netcdf_tables.Bug-6543.stable.out sql/test/BugTracker-2018/Tests/truncate_sys_tables.Bug-6543.stable.out sql/test/BugTracker-2018/Tests/truncate_tmp_tables.Bug-6543.stable.out sql/test/BugTracker/Tests/auto_increment.SF-1834820.stable.out sql/test/BugTracker/Tests/crash_on_delete.SF-1639108.stable.out sql/test/BugTracker/Tests/insert_not_exists.SF-1380287.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/BugTracker/Tests/large_prepare_2.SF-1363729.stable.out sql/test/BugTracker/Tests/proc_insert_into.SF-1958572.stable.out sql/test/BugTracker/Tests/with_only_once.SF-1720293.stable.out sql/test/BugTracker/Tests/with_row_number.SF-1898089.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.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-prologue.stable.out sql/test/Skyserver/Tests/Skyserver.stable.out sql/test/Skyserver/bugs/Tests/load_dbobjects.stable.out sql/test/Skyserver/bugs/Tests/load_objmask.stable.out sql/test/Tests/count.stable.out sql/test/Tests/median_stdev.stable.out sql/test/Tests/rank.stable.out sql/test/Tests/truncate-statements.stable.out sql/test/Users/Tests/copyinto.stable.out sql/test/VOC/Tests/VOC.stable.out sql/test/bugs/Tests/distinct_count.stable.out sql/test/bugs/Tests/insert_delete-bug-sf-904025.stable.out sql/test/bugs/Tests/rangejoin_optimize_bug.stable.out sql/test/bugs/Tests/select_constant_from_where_1=1-bug-sf-1019529.stable.out sql/test/copy/Tests/format_date.stable.out sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/merge-partitions/Tests/mergepart00.stable.out sql/test/merge-partitions/Tests/mergepart01.stable.out sql/test/merge-partitions/Tests/mergepart02.stable.out sql/test/merge-partitions/Tests/mergepart03.stable.out sql/test/merge-partitions/Tests/mergepart04.stable.out sql/test/merge-partitions/Tests/mergepart16.stable.out sql/test/pg_regress/Tests/random.stable.out sql/test/pg_regress/Tests/vacuum.stable.out sql/test/pg_regress/Tests/without_oid.stable.out Branch: Apr2019 Log Message:
small optimization (ie use candidate column for count(*)) diffs (truncated from 3685 to 300 lines): diff --git a/geom/BugTracker/Tests/X_crash.SF-1971632.stable.out b/geom/BugTracker/Tests/X_crash.SF-1971632.stable.out --- a/geom/BugTracker/Tests/X_crash.SF-1971632.stable.out +++ b/geom/BugTracker/Tests/X_crash.SF-1971632.stable.out @@ -29,7 +29,7 @@ Ready. [ 1 ] [ 1 ] #select count(*) from geoms; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length 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 @@ -616,6 +616,17 @@ exp_bin(backend *be, sql_exp *e, stmt *l as = grp; } else if (left) { as = bin_first_column(be, left); + /* small optimization, ie use candidates directly on count(*) */ + if (!need_distinct(e) && !ext && !need_no_nil(e) && as) { + /* skip alias statements */ + while (as->type == st_alias) + as = as->op1; + /* use candidate */ + if (as && as->type == st_join && as->flag == cmp_project) { + if (as->op1 && (as->op1->type != st_result || as->op1->op1->type != st_group)) /* exclude a subquery with select distinct under the count */ + as = as->op1; + } + } } else { /* create dummy single value in a column */ as = stmt_atom_lng(be, 0); diff --git a/sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out b/sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out --- a/sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out +++ b/sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out @@ -71,7 +71,7 @@ Ready. # "qual" STRING NOT NULL, #ALTER TABLE alignments ADD TABLE alignments_1; #SELECT COUNT(*) FROM alignments; -% bam.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 2 # length diff --git a/sql/benchmarks/nobench/Tests/nobench.stable.out b/sql/benchmarks/nobench/Tests/nobench.stable.out --- a/sql/benchmarks/nobench/Tests/nobench.stable.out +++ b/sql/benchmarks/nobench/Tests/nobench.stable.out @@ -57,7 +57,7 @@ Ready. #{"nested_obj": {"num": 4, "str": "GBRDCMBQ"}, "dyn2": true, "dyn1": 9, "nested_arr": ["especially"], "str2": "GBRDCMBQ", "str1": "GBRDCMBQGE======", "sparse_093": "GBRDCMBQGE======", "thousandth": 9, "sparse_090": "GBRDCMBQGE======", "sparse_091": "GBRDCMBQGE======", "sparse_092": "GBRDCMBQGE======", "num": 9, "bool": true, "sparse_095": "GBRDCMBQGE======", "sparse_096": "GBRDCMBQGE======", "sparse_097": "GBRDCMBQGE======", "sparse_098": "GBRDCMBQGE======", "sparse_094": "GBRDCMBQGE======", "sparse_099": "GBRDCMBQGE======"}, [ 10 ] #select count(*) from bench10; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 2 # length diff --git a/sql/benchmarks/ssbm/Tests/check1.stable.out b/sql/benchmarks/ssbm/Tests/check1.stable.out --- a/sql/benchmarks/ssbm/Tests/check1.stable.out +++ b/sql/benchmarks/ssbm/Tests/check1.stable.out @@ -24,31 +24,31 @@ Ready. # 17:32:49 > #select count(*) from DWDATE; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 4 # length [ 2556 ] #select count(*) from SUPPLIER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 3 # length [ 100 ] #select count(*) from CUSTOMER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 3 # length [ 300 ] #select count(*) from PART; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 4 # length [ 2000 ] #select count(*) from LINEORDER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 5 # length diff --git a/sql/benchmarks/ssbm/Tests/load.stable.out b/sql/benchmarks/ssbm/Tests/load.stable.out --- a/sql/benchmarks/ssbm/Tests/load.stable.out +++ b/sql/benchmarks/ssbm/Tests/load.stable.out @@ -36,31 +36,31 @@ Ready. [ 60175 ] #COMMIT; #select count(*) from DWDATE; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 4 # length [ 2556 ] #select count(*) from SUPPLIER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 3 # length [ 100 ] #select count(*) from CUSTOMER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 3 # length [ 300 ] #select count(*) from PART; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 4 # length [ 2000 ] #select count(*) from LINEORDER; -% sys.L4 # table_name +% .L3 # table_name % L3 # name % bigint # type % 5 # length diff --git a/sql/benchmarks/tpcds/Tests/check0.stable.out b/sql/benchmarks/tpcds/Tests/check0.stable.out --- a/sql/benchmarks/tpcds/Tests/check0.stable.out +++ b/sql/benchmarks/tpcds/Tests/check0.stable.out @@ -26,151 +26,151 @@ Ready. #start transaction; #select count(*) from dbgen_version; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from customer_address; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from customer_demographics; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from date_dim; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from warehouse; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from ship_mode; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from time_dim; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from reason; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from income_band; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from item; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from store; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from call_center; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from customer; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from web_site; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from store_returns; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from household_demographics; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from web_page; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from promotion; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from catalog_page; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from inventory; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from catalog_returns; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from web_returns; -% sys.L3 # table_name +% .L3 # table_name % L3 # name % bigint # type % 1 # length [ 0 ] #select count(*) from web_sales; -% sys.L3 # table_name +% .L3 # table_name _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list